rm(list = ls())

Install packages

library(mombf)
library(dplyr)
library(tidyr)
library(ggsci)
library(hdm)
library(glmnet)
library(ggplot2)
library(tidyverse)
library(HDCI)
library(gridExtra)
library(pROC)
library("adapt4pv")
library(readr)
library(dplyr)
library(knitr)
library(stringr)
library(data.table)
library(stringr)
library(readr)
library(tidyverse)

Prep

Load data

# Load data
DIR <- '/Users/jonnycodd/Downloads/'

raw_train <- read.csv(file.path(DIR, 'realestate_train.csv'))
# Merge indices 
pca_offer <- read.csv(file.path(DIR, 'pca_offer.csv'))
pca_demand <- read.csv(file.path(DIR, 'pca_demand.csv'))

# Extract year and month from date in raw_train and raw_test
raw_train$year <- format(raw_train$date, "%Y")
raw_train$month <- format(raw_train$date, "%m")

raw_test$year <- format(raw_test$date, "%Y")
raw_test$month <- format(raw_test$date, "%m")

# Extract year and month from date in pca_offer and pca_demand
pca_offer$year <- format(as.Date(pca_offer$date), "%Y")
pca_offer$month <- format(as.Date(pca_offer$date), "%m")

pca_demand$year <- format(as.Date(pca_demand$date), "%Y")
pca_demand$month <- format(as.Date(pca_demand$date), "%m")

# Merge raw_train with pca_offer and pca_demand
raw_train <- merge(raw_train, pca_offer, by = c("year", "month"), all = FALSE)
raw_train <- merge(raw_train, pca_demand, by = c("year", "month"), all = FALSE)

# Merge raw_test with pca_offer and pca_demand
raw_test <- merge(raw_test, pca_offer, by = c("year", "month"), all = FALSE)
raw_test <- merge(raw_test, pca_demand, by = c("year", "month"), all.x = FALSE)

Define model

n_addresses <- 10
dummy_addresses <- T
dummy_subdistricts <- T
dummy_coordinates <- F
square_cordinates <- T
qcuts <- 100
drop_prev_prices <- T

log_price <- T
# Filter addresses
address_counts <- raw_train %>% count(address_simple)
selected_addresses <- address_counts[address_counts$n > n_addresses, ]$address_simple

cat('Train size before', dim(raw_train), ': after', dim(raw_train[raw_train$address_simple %in% selected_addresses, ]))
Train size before 23770 489 : after 23432 489
raw_train <- raw_train[raw_train$address_simple %in% selected_addresses, ]

cat('Train size before', dim(raw_test), ': after', dim(raw_test[raw_test$address_simple %in% selected_addresses, ]))
Train size before 3200 489 : after 2941 489
raw_test <- raw_test[raw_test$address_simple %in% selected_addresses, ]

Address dummies

generate_dummies <- function(train, test, column) {
  # Combine train and test
  combined_data <- rbind(train, test)
  
  # Creating dummy variables (assuming 'category' is your categorical column)
  combined_data_dummy <- model.matrix(~ get(column) - 1, combined_data)
  
  col_names <- stringr::str_replace(colnames(combined_data_dummy), "get\\(column\\)", paste0(column, '_'))
  #print(col_names)
  colnames(combined_data_dummy) <- col_names
  
  # Splitting back into training and testing sets
  train_rows <- nrow(train)
  x_train_dummy <- combined_data_dummy[1:train_rows, ]
  x_test_dummy <- combined_data_dummy[(train_rows + 1):nrow(combined_data_dummy), ]
  
  # Add the dummy variables to the original dataframes
  train <- cbind(train, x_train_dummy)
  test <- cbind(test, x_test_dummy)
  
  return(list(train = train, test = test))
}

if (dummy_addresses) {
  result <- generate_dummies(raw_train, raw_test, 'address_simple')
  raw_train <- result$train
  raw_test <- result$test  
}

Subdistrict dummies

obtain_subdistrict <- function(df) {
  df$subdistrict <- sapply(strsplit(df$address_simple, ",\\s*"), function(x) x[[2]])
  df[df$subdistrict == 'Dubai', 'subdistrict'] <- sapply(strsplit(df[df$subdistrict == 'Dubai', 'address_simple'], ",\\s*"), function(x) x[[1]])  
  
  return(df)
}

if (dummy_subdistricts) {
  raw_train <- obtain_subdistrict(raw_train)
  raw_test <- obtain_subdistrict(raw_test)
  
  result <- generate_dummies(raw_train, raw_test, 'subdistrict')
  raw_train <- result$train
  raw_test <- result$test  
}

Coordinates dummies

do_quantiles <- function(data, quantiles, prefix) {
    cuts <- cut(data, quantiles, include.lowest = T)
    cuts <- paste0(prefix, cuts)
    return(cuts)
}
  
combined_data <- rbind(raw_train, raw_test)

# Function to assign subregions
assign_subregion <- function(data, lat_breaks, long_breaks) {
  data$subregion <- with(data, paste(
    cut(lat, breaks = lat_breaks, labels = FALSE, include.lowest = TRUE),
    cut(lon, breaks = long_breaks, labels = FALSE, include.lowest = TRUE),
    sep = "_"
  ))
  return(data)
}

if (square_cordinates){
  
  # Lat
  lat_quantiles <- unique(quantile(combined_data$lat, 0:qcuts/qcuts))
  #combined_data$lat_cuts <- do_quantiles(combined_data$lat, quantiles, 'lat_')

  # Lon
  lon_quantiles <- unique(quantile(combined_data$lon, 0:qcuts/qcuts))
  #combined_data$lon_cuts <- do_quantiles(combined_data$lon, quantiles, 'lon_')
  
  # Assign subregions to both datasets
  raw_train <- assign_subregion(raw_train, lat_quantiles, lon_quantiles)
  raw_test <- assign_subregion(raw_test, lat_quantiles, lon_quantiles)

  result <- generate_dummies(raw_train, raw_test, 'subregion')
  raw_train <- result$train
  raw_test <- result$test  
    
}

if (dummy_coordinates) {
  # Lat
  quantiles <- unique(quantile(combined_data$lat, 0:qcuts/qcuts))
  raw_train$lat_cuts <- do_quantiles(raw_train$lat, quantiles, 'lat_')
  raw_test$lat_cuts <- do_quantiles(raw_test$lat, quantiles, 'lat_')
    
  # Lon
  quantiles <- unique(quantile(combined_data$lon, 0:qcuts/qcuts))
  raw_train$lon_cuts <- do_quantiles(raw_train$lon, quantiles, 'lon_')
  raw_test$lon_cuts <- do_quantiles(raw_test$lon, quantiles, 'lon_')


  # Lat
  result <- generate_dummies(raw_train, raw_test, 'lat_cuts')
  raw_train <- result$train
  raw_test <- result$test  
  
  # Lon
  result <- generate_dummies(raw_train, raw_test, 'lon_cuts')
  raw_train <- result$train
  raw_test <- result$test  
}

Cleaning

test <- raw_test 
train <-raw_train

# Keep numeric columns
numeric <- sapply(train, is.numeric)
numeric_test <- sapply(train, is.numeric)

train <- train[, numeric]
test <- test[, numeric]

# Remove columns with 0 variance 
test= test[,apply(test, 2, var) > 0] #remove columns with 0 variance
train= train[,apply(train, 2, var) > 0] #remove columns with 0 variance

cat(dim(train), dim(test))
23432 1122 2941 1087
# To have same columns in train and test
train <- train[, intersect(names(train), names(test))]
test <- test[, intersect(names(train), names(test))]

cat(dim(train), dim(test))
23432 1083 2941 1083

Create additional variables

Interaction terms

# Define create interactions terms function
create_interaction_terms <- function(data, variables) {
    # Identify columns that start with "community_"
    subdistrict_cols <- grep("^community_", names(data), value = TRUE)

    # Loop over these columns and create interaction terms
    for(col in subdistrict_cols) {
        for(var in variables) {
            # Check if the variable exists in the data
            if(var %in% names(data)) {
                # Create interaction term and add it to the data
                data[paste0(col, "_", var)] <- data[, col] * data[, var]
            } else {
                warning(paste("Variable", var, "not found in dataframe. Skipping."))
            }
        }
    }
    # Return the modified dataframe
    return(data)
}

# Define the list of variables for interaction
variables_to_interact <- c("beds", "area", "baths", "balcony", "parking", "swimming_pool", "furnished")

# Call the function with your dataframe and the list of variables
train <- create_interaction_terms(train, variables_to_interact)
test <- create_interaction_terms(test, variables_to_interact)

Squared vars

train$area_sq <- train$area^2
test$area_sq <- test$area^2

train$bed_sq <- train$bed^2
test$bed_sq <- test$bed^2

train$baths_sq <- train$baths^2
test$baths_sq <- test$baths^2

Remove highly correlated variables

# Check for correlation
correlation_matrix <- cor(train)
high_correlation <- which(abs(correlation_matrix) > 0.99, arr.ind = TRUE)

# Return which variables are getting removex
high_correlation <- high_correlation[high_correlation[, 1] < high_correlation[, 2], ]
pairs_to_remove <- apply(high_correlation, 1, function(index) {
  pair <- colnames(train)[index]
  #cat("High correlation between:", pair[1], "and", pair[2], "\n")
  #cat("Removing:", pair[2], "\n\n")
  return(pair[2])
})

# Remove
test <- test[, !colnames(test) %in% pairs_to_remove]
train <- train[, !colnames(train) %in% pairs_to_remove]

Prepare dataframes

# Split into X and Y for scaling
x_train <- select(train, -price)

num_scale <- 1 # to make weights more interpretable

y_train_orig <- train$price/num_scale
if (log_price) {
  y_train <- log(train$price/num_scale)
} else{
  y_train <- train$price/num_scale
}

x_test <- select(test, -price)
y_test_orig <- test$price/num_scale
if (log_price) {
  y_test <- log(test$price/num_scale)
} else{
  y_test <- test$price/num_scale
}

# Save unscaled
x_train_unscaled <- x_train
x_test_unscaled <- x_test

# Scale 
x_train <- scale(x_train)
x_test <- scale(x_test)

# Create dfs
y_train_df <- data.frame(y_train)
x_train_df <- data.frame(x_train)
colnames(y_train_df)<-'price'

y_test_df <- data.frame(y_test)
x_test_df <- data.frame(x_test)
colnames(y_test_df)<-'price'

# Drop same price variables
if (drop_prev_prices) {
  # save data frame with price vars
  x_test_df_with_pricevars <- x_test_df
  x_train_df_with_pricevars <- x_train_df
  
  # Drop from main dfs
  x_test_df <- x_test_df %>% select(-contains("same"))
  x_train_df <- x_train_df %>% select(-contains("same"))
}

train_df<-cbind(x_train_df,y_train_df)
test_df<-cbind(x_test_df,y_test_df)

Define regression metrics

# Regression metrics
rmse <- function(observed, predicted) {
  sqrt(mean((observed - predicted) ^ 2))
}

log_rmse <- function(observed, predicted) {
  sqrt(mean((log(observed) - log(predicted)) ^ 2))
}

mape <- function(observed, predicted) {
  mean(abs((predicted - observed) / observed)) * 100
}

mae <- function(observed, predicted) {
  mean(abs(observed - predicted))
}

# Metrics CV
regression_metrics <- function(model, data, y_real, num_scale, y_wout_log) {
 
  pred <- predict(model, newx = as.matrix(data), s = fit.lasso$lambda.min, type = "response")
  
  if (log_price) {
      pred <- exp(pred)
      y_real <- y_wout_log
  }
  rmse_value <- rmse(y_real, pred)*num_scale
  mape <- mape(y_real, pred)
  mae <- mae(y_real, pred)*num_scale
  cat('\nRMSE:', rmse_value, 'MAPE:', mape, 'MAE:', mae) 
  
  return(list(rmse=rmse_value, mape=mape, mae=mae))
}

Summarize data

# Calculate statistics for y_train
n_obs_train <- length(y_train)
mean_train <- mean(exp(y_train))
quartiles_train <- quantile(as.matrix(exp(y_train)), probs = c(0.25, 0.5, 0.75))

# Calculate statistics for y_test
n_obs_test <- length(y_test)
mean_test <- mean(y_test)
quartiles_test <- quantile(as.matrix(y_test), probs = c(0.25, 0.5, 0.75))

# Create the data frame with the statistics
stats_table <- data.frame(
  Dataset = c("y_train", "y_test"),
  Observations = c(n_obs_train, n_obs_test),
  Mean = c(mean_train, mean_test),
  `1st Quartile` = c(quartiles_train[1], quartiles_test[1]),
  Median = c(quartiles_train[2], quartiles_test[2]),
  `3rd Quartile` = c(quartiles_train[3], quartiles_test[3])
)

stats_table_long <- stats_table %>% 
  pivot_longer(cols = -Dataset, names_to = "Metric", values_to = "Value")

# Spread the long format table to wide format with one column for y_train and one for y_test
stats_table_wide <- stats_table_long %>% 
  pivot_wider(names_from = Dataset, values_from = Value)

LASSO

x_test_df[is.na(x_test_df)] <- 0
x_train_df[is.na(x_train_df)] <- 0

cat(dim(x_train_df))
23432 607

LASSO BIC

Define model

lasso.bic <- function(y,x,extended=FALSE) {
  #Select model in LASSO path with best BIC (using LASSO regression estimates)
  #Input
  # - y: vector with response variable
  # - x: design matrix
  #
  #Output: list with the following elements
  # - coef: LASSO-estimated regression coefficient with lambda set via BIC
  # - ypred: predicted y
  # - lambda.opt: optimal value of lambda
  # - lambda: data.frame with bic and number of selected variables for each value of lambda
  require(glmnet)
  fit <- glmnet(x=x,y=y,family='gaussian',alpha=1)
  pred <- cbind(1,x) %*% rbind(fit$a0,fit$beta)
  n <- length(y)
  p <- colSums(fit$beta!=0) + 1
  if (!extended){
    bic <- n * log(colSums((y-pred)^2)/length(y)) + n*(log(2*pi)+1) + log(n)*p 
  } else {
    bic <- n * log(colSums((y-pred)^2)/length(y)) + n*(log(2*pi)+1) + log(n)*p + 2*log(choose(ncol(x),p))
  }
  sel <- which.min(bic)
  beta <- c(fit$a0[sel],fit$beta[,sel]); names(beta)[1]= 'Intercept'
  ypred <- pred[,sel]
  ans <- list(coef=beta,ypred=ypred,lambda.opt=fit$lambda[sel],lambda=data.frame(lambda=fit$lambda,bic=bic,nvars=p))
  return(ans)
}

Fit model

# Fit model
fit.lasso_ebic = lasso.bic(x=as.matrix(x_train_df), y=y_train ,extended = TRUE)
fit.lasso_ebic
$coef
                                                                                                                Intercept 
                                                                                                             1.392875e+01 
                                                                                                                     beds 
                                                                                                             1.172304e-01 
                                                                                                                    baths 
                                                                                                             8.750363e-03 
                                                                                                                     area 
                                                                                                             3.266779e-01 
                                                                                                                      lat 
                                                                                                             0.000000e+00 
                                                                                                                      lon 
                                                                                                            -6.181044e-02 
                                                                                                                  balcony 
                                                                                                             7.467256e-04 
                                                                                                                  parking 
                                                                                                             0.000000e+00 
                                                                                                            swimming_pool 
                                                                                                             0.000000e+00 
                                                                                                                furnished 
                                                                                                             5.220621e-03 
                                                                                           emirate_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                          emirate_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                   emirate_offplan_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                           emirate_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift3m 
                                                                                                             6.774713e-03 
                                                                                          emirate_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                   emirate_offplan_n_transactions_shift3m 
                                                                                                             1.271755e-03 
                                                                                  emirate_offplan_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                           emirate_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                          emirate_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                          emirate_std_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                   emirate_offplan_n_transactions_shift6m 
                                                                                                             7.198477e-03 
                                                                                  emirate_offplan_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                  emirate_offplan_std_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                     emirate_ready_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                    emirate_ready_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                              comm_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                             comm_avg_trans_value_shift1m 
                                                                                                             2.086476e-02 
                                                                                             comm_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                      comm_offplan_n_transactions_shift1m 
                                                                                                             8.102876e-03 
                                                                                     comm_offplan_avg_trans_value_shift1m 
                                                                                                             1.386578e-03 
                                                                                     comm_offplan_std_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                        comm_ready_n_transactions_shift1m 
                                                                                                             0.000000e+00 
                                                                                       comm_ready_avg_trans_value_shift1m 
                                                                                                             0.000000e+00 
                                                                                       comm_ready_std_trans_value_shift1m 
                                                                                                            -1.275687e-03 
                                                                                              comm_n_transactions_shift3m 
                                                                                                            -2.197993e-03 
                                                                                             comm_avg_trans_value_shift3m 
                                                                                                             1.247664e-02 
                                                                                             comm_std_trans_value_shift3m 
                                                                                                            -4.595408e-05 
                                                                                      comm_offplan_n_transactions_shift3m 
                                                                                                             0.000000e+00 
                                                                                     comm_offplan_avg_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                     comm_offplan_std_trans_value_shift3m 
                                                                                                             0.000000e+00 
                                                                                        comm_ready_n_transactions_shift3m 
                                                                                                            -4.844294e-03 
                                                                                       comm_ready_avg_trans_value_shift3m 
                                                                                                             4.227075e-03 
                                                                                       comm_ready_std_trans_value_shift3m 
                                                                                                            -8.982299e-04 
                                                                                              comm_n_transactions_shift6m 
                                                                                                             0.000000e+00 
                                                                                             comm_avg_trans_value_shift6m 
                                                                                                             0.000000e+00 
                                                                                             comm_std_trans_value_shift6m 
                                                                                                            -7.059834e-03 
                                                                                      comm_offplan_n_transactions_shift6m 
                                                                                                             3.285280e-03 
                                                                                     comm_offplan_avg_trans_value_shift6m 
                                                                                                            -1.728317e-04 
                                                                                     comm_offplan_std_trans_value_shift6m 
                                                                                                             4.375250e-04 
                                                                                        comm_ready_n_transactions_shift6m 
                                                                                                            -6.404557e-03 
                                                                                       comm_ready_avg_trans_value_shift6m 
                                                                                                             1.685503e-02 
                                                                                                  property_type_Townhouse 
                                                                                                             1.185102e-02 
                                                                                                      property_type_Villa 
                                                                                                             1.544838e-02 
                                                                                 community_Jumeirah.Beach.Residence..JBR. 
                                                                                                             0.000000e+00 
                                                                                     community_Jumeirah.Lake.Towers..JLT. 
                                                                                                            -3.884570e-02 
                                                                                  community_Jumeirah.Village.Circle..JVC. 
                                                                                                             0.000000e+00 
                                                                                            completion_status_constructed 
                                                                                                            -8.709094e-03 
                                                                                     completion_status_under.construction 
                                                                                                            -3.237438e-03 
                                                                                                 metro_JumeirahLakeTowers 
                                                                                                             2.471315e-02 
                                                                                                        metro_DubaiMarina 
                                                                                                            -1.286495e-02 
                                                                                            metro_JumeirahBeachResidence1 
                                                                                                             0.000000e+00 
                                                                                                  metro_Dubai.Marina.Mall 
                                                                                                             0.000000e+00 
                                                                                                    metro_AirportTerminal 
                                                                                                             0.000000e+00 
                                                                                                hospital_EmiratesHospital 
                                                                                                            -1.615018e-01 
                                                                                                   hospital_AsterHospital 
                                                                                                             0.000000e+00 
                                                                                                          market_Waitrose 
                                                                                                             0.000000e+00 
                                                                                                         market_Carrefour 
                                                                                                             0.000000e+00 
                                                                                                         market_Safestway 
                                                                                                            -2.360374e-02 
                                                                                               AED_EUR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_GBP_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_RUB_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_JPY_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CNY_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CAD_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_CAD_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_CAD_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_SAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                           AED_SAR_price_low_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_CHF_price_mean_shift1m 
                                                                                                             6.990931e-03 
                                                                                               USD_BTC_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                             USD_BTC_price_median_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                          USD_BTC_price_high_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               USD_ETH_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                             USD_ETH_price_median_shift1m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q25_shift1m 
                                                                                                            -1.723077e-03 
                                                                                                USD_ETH_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                          USD_ETH_price_high_mean_shift1m 
                                                                                                             8.055495e-04 
                                                                                                SP_500_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 SP_500_price_q25_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 SP_500_price_q75_shift1m 
                                                                                                             0.000000e+00 
                                                                                                  DINV_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 EMAAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                                DEYAAR_price_mean_shift1m 
                                                                                                             0.000000e+00 
                                                                                               AED_EUR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_GBP_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_RUB_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             AED_RUB_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_RUB_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                           AED_RUB_price_low_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_JPY_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_CNY_price_mean_shift6m 
                                                                                                            -2.276814e-03 
                                                                                               AED_CAD_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_SAR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             AED_SAR_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_SAR_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                           AED_SAR_price_low_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               AED_CHF_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                AED_CHF_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                               USD_BTC_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_BTC_price_q25_shift6m 
                                                                                                             1.665941e-04 
                                                                                                USD_BTC_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                          USD_BTC_price_high_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                               USD_ETH_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                             USD_ETH_price_median_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                USD_ETH_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                          USD_ETH_price_high_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                SP_500_price_mean_shift6m 
                                                                                                             1.102094e-02 
                                                                                                  DINV_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 EMAAR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                DEYAAR_price_mean_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 DEYAAR_price_q25_shift6m 
                                                                                                             0.000000e+00 
                                                                                                 DEYAAR_price_q75_shift6m 
                                                                                                             0.000000e+00 
                                                                                                residential_index_shift1m 
                                                                                                             0.000000e+00 
                                                                                                residential_index_shift3m 
                                                                                                             0.000000e+00 
                                                                                                 commercial_index_shift1m 
                                                                                                             0.000000e+00 
                                                                                                 commercial_index_shift3m 
                                                                                                             0.000000e+00 
                                                                                                    general_index_shift1m 
                                                                                                             0.000000e+00 
                                                                        housing_water_electricity_gas_other.fuels_shift1m 
                                                                                                             1.690951e-03 
                                                                                                    general_index_shift6m 
                                                                                                             0.000000e+00 
                                                                        housing_water_electricity_gas_other.fuels_shift6m 
                                                                                                             0.000000e+00 
                                                                                                                 gdp_G.20 
                                                                                                             0.000000e+00 
                                                                                                                  gdp_G.7 
                                                                                                             0.000000e+00 
                                                                                                                 gdp_OECD 
                                                                                                             0.000000e+00 
                                                                                                                  gdp_USA 
                                                                                                             0.000000e+00 
                                                                                              gdp_construction_cost.index 
                                                                                                             0.000000e+00 
                                                                                         gdp_construction_non.residential 
                                                                                                             0.000000e+00 
                                                                                                         gdp_construction 
                                                                                                            -1.057414e-03 
                                                                                                     gdp_mining_quarrying 
                                                                                                             0.000000e+00 
                                                                                               gdp_real_estate_activities 
                                                                                                             0.000000e+00 
                                                                                                       gold_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                                gold_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                     petrol_price_shift1m 
                                                                                                             2.378588e-03 
                                                                                              petrol_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                     diesel_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                              diesel_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                   gasoline_price_shift1m 
                                                                                                             0.000000e+00 
                                                                                            gasoline_price_change_shift1m 
                                                                                                             0.000000e+00 
                                                                                                       gold_price_shift3m 
                                                                                                             0.000000e+00 
                                                                                                gold_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                     petrol_price_shift3m 
                                                                                                             9.624082e-03 
                                                                                              petrol_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                     diesel_price_shift3m 
                                                                                                             0.000000e+00 
                                                                                              diesel_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                   gasoline_price_shift3m 
                                                                                                             4.878052e-03 
                                                                                            gasoline_price_change_shift3m 
                                                                                                             0.000000e+00 
                                                                                                                   date.y 
                                                                                                             0.000000e+00 
                                                                                                                PC1_offer 
                                                                                                             0.000000e+00 
                                                                                                                PC2_offer 
                                                                                                             0.000000e+00 
                                                                                                                PC3_offer 
                                                                                                             0.000000e+00 
                                                                                                               PC1_demand 
                                                                                                             0.000000e+00 
                                                                                                               PC2_demand 
                                                                                                             0.000000e+00 
                                                                                                               PC3_demand 
                                                                                                             0.000000e+00 
                                                                            address_simple_23.Marina..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                          address_simple_5242.Towers..Dubai.Marina..Dubai 
                                                                                                             1.365858e-01 
                                       address_simple_ACES.Chateau..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.731734e-03 
                                 address_simple_Al.Anbar.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                            -3.941788e-03 
                                         address_simple_Al.Bateen.Towers..The.Walk..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             3.647046e-02 
                                      address_simple_Al.Dana.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.549790e-02 
                                            address_simple_Al.Fattan.Marine.Towers..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -1.581064e-02 
                                                                 address_simple_Al.Majara..Al.Majara..Dubai.Marina..Dubai 
                                                                                                             2.197385e-02 
                                  address_simple_Al.Mesk.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                             6.068184e-03 
                                address_simple_Al.Murjan.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai 
                                                                                                            -1.986025e-03 
                                                       address_simple_Al.Sahab.Tower..Al.Sahab.Tower..Dubai.Marina..Dubai 
                                                                                                             1.419571e-02 
                                           address_simple_Al.Seef.Tower..JLT.Cluster.U..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.463509e-03 
                                          address_simple_Al.Shera.Tower..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             3.460979e-03 
                                      address_simple_Al.Waleed.Paradise..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.642204e-03 
                                             address_simple_ALCOVE..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -9.938207e-04 
                                                       address_simple_Amwaj..Amwaj..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -4.878548e-03 
                           address_simple_Arezzo..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.070771e-04 
                                     address_simple_Aria.Residence..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.664151e-05 
                             address_simple_Armada.Tower..Armada.Towers..JLT.Cluster.P..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -7.356219e-03 
                                  address_simple_Astoria.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.405973e-03 
                                                            address_simple_Attessa..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                             address_simple_Aurora..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             2.699794e-03 
                          address_simple_Autumn..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.930508e-03 
                                   address_simple_Avanos.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.797364e-04 
                                                                                address_simple_Azure..Dubai.Marina..Dubai 
                                                                                                            -2.933300e-03 
                                                       address_simple_Bahar..Bahar..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -3.202360e-03 
                                                 address_simple_Banyan.Tree.Residences..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             2.278268e-02 
                                             address_simple_Bay.Central..Central.Tower...Bay.Central..Dubai.Marina..Dubai 
                                                                                                             3.902953e-03 
                                                             address_simple_Bay.Central..Bay.Central..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                          address_simple_Bay.Central..Dubai.Marina..Dubai 
                                                                                                             6.310102e-03 
                                                           address_simple_Beauport..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             6.635436e-03 
                                  address_simple_Belgravia.Heights..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.690798e-03 
                                   address_simple_Belgravia.Square..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.195704e-02 
                               address_simple_Belgravia..Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.267598e-02 
                                          address_simple_Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             8.751414e-03 
                                          address_simple_Belgravia..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.264194e-02 
                                  address_simple_Beverly.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             9.300463e-03 
                                     address_simple_Binghatti.Gate..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.879511e-03 
                                     address_simple_Binghatti.Gems..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -4.765416e-03 
                                  address_simple_Binghatti.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.185190e-02 
                                  address_simple_Binghatti.Jasmine..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.849055e-03 
                                   address_simple_Binghatti.Mirage..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                     address_simple_Binghatti.Rose..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                           address_simple_Blakely.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                            -2.443851e-03 
                                      address_simple_Bloom.Heights..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.298927e-02 
                                       address_simple_Bloom.Towers..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.405041e-02 
                                                           address_simple_Bonaire.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                        address_simple_Bonnington.Tower..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.511790e-02 
                                                                       address_simple_Botanica.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.064052e-02 
                                           address_simple_Botanica..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.171108e-03 
                                         address_simple_Cappadocia..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.125556e-02 
                                   address_simple_Catch.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.159711e-02 
                                                                          address_simple_Cayan.Tower..Dubai.Marina..Dubai 
                                                                                                             2.137342e-02 
                          address_simple_Chaimaa.Avenue.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             4.797648e-03 
                                   address_simple_Chaimaa.Premiere..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.039678e-03 
                                                                           address_simple_Ciel.Tower..Dubai.Marina..Dubai 
                                                                                                             2.035603e-02 
                                    address_simple_City.Apartments..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.775862e-03 
                                          address_simple_Concorde.Tower..JLT.Cluster.H..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -5.087423e-03 
                                                                    address_simple_Continental.Tower..Dubai.Marina..Dubai 
                                                                                                            -2.100973e-03 
                                  address_simple_Crystal.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.051882e-03 
                                       address_simple_DAMAC.Ghalia..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                        address_simple_Damac.Heights..Dubai.Marina..Dubai 
                                                                                                             3.192481e-02 
                           address_simple_Dar.Al.Jawhara.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.169806e-03 
                                                                address_simple_DEC.Tower..DEC.Towers..Dubai.Marina..Dubai 
                                                                                                            -1.618990e-02 
                                                                           address_simple_DEC.Towers..Dubai.Marina..Dubai 
                                                                                                            -5.862341e-03 
                       address_simple_Diamond.Views..Diamond.Views..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.074257e-02 
                                                                            address_simple_Dorra.Bay..Dubai.Marina..Dubai 
                                                                                                             1.185554e-02 
                                                            address_simple_Dream.Tower..Dream.Towers..Dubai.Marina..Dubai 
                                                                                                            -1.091182e-02 
                                                                         address_simple_Dream.Towers..Dubai.Marina..Dubai 
                                                                                                            -8.287119e-03 
                                        address_simple_Dubai.Arch.Tower..JLT.Cluster.G..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -4.098149e-03 
                                                                                       address_simple_Dubai.Marina..Dubai 
                                                                                                             4.230459e-04 
                                        address_simple_Dubai.Star.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                               address_simple_Dusit.Princess.Rijas..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             7.738611e-03 
                                        address_simple_Eaton.Place..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.043303e-02 
                                                                      address_simple_Elite.Residence..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.151065e-03 
                                                                   address_simple_Escan.Marina.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.175404e-02 
                                                         address_simple_Fairfield.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             7.543534e-03 
                              address_simple_FIVE.Jumeirah.Village..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.092601e-02 
                         address_simple_Florence..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                          address_simple_Fortunato..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.086581e-03 
                                 address_simple_Gardenia.Residency..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.751887e-03 
                         address_simple_Gardenia..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.348732e-03 
                                        address_simple_Global.Lake.View..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.772989e-03 
                                     address_simple_Goldcrest.Executive..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.612908e-04 
                                         address_simple_Goldcrest.Views..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                         address_simple_Goldcrest.Views..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                         address_simple_Green.Lakes..JLT.Cluster.S..Green.Lake.Towers...Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             4.026287e-03 
                                     address_simple_Hanover.Square..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.434655e-02 
                                   address_simple_Harrington.House..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.502065e-03 
                                       address_simple_Haven.Villas..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.854943e-03 
                                       address_simple_Hyati.Avenue..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.571173e-03 
                                   address_simple_Hyati.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                              address_simple_Icon.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.961754e-03 
                                              address_simple_Icon.Tower..JLT.Cluster.M..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -8.415978e-03 
                                            address_simple_Indigo.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             4.525422e-03 
                                                                            address_simple_Iris.Blue..Dubai.Marina..Dubai 
                                                                                                             9.236770e-03 
                              address_simple_Joya.Verde.Residences..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.510212e-05 
                   address_simple_Jumeirah.Bay.X1..JLT.Cluster.X..Jumeirah.Bay.Towers...Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -4.400445e-03 
                                                                     address_simple_Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             0.000000e+00 
address_simple_Jumeirah.Gate.Tower..The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             1.048070e-01 
                                                                         address_simple_Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                             address_simple_Jumeirah.Living.Marina.Gate..Marina.Gate..Dubai.Marina..Dubai 
                                                                                                             9.638130e-03 
                                                                      address_simple_Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                     address_simple_JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                     address_simple_JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.985220e-04 
                                   address_simple_Kensington.Manor..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.234981e-02 
                                                                             address_simple_KG.Tower..Dubai.Marina..Dubai 
                                                                                                            -3.659382e-03 
                                address_simple_Knightsbridge.Court..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.212669e-02 
                              address_simple_La.Riviera.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.228971e-03 
                                   address_simple_La.Riviera.Azure..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.329997e-04 
              address_simple_La.Riviera.Estate..La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                 address_simple_La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -3.292367e-04 
                                                                           address_simple_La.Riviera..Dubai.Marina..Dubai 
                                                                                                            -1.978645e-04 
                                                             address_simple_La.Vie..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             8.056253e-03 
                                            address_simple_Laguna.Tower..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             4.619462e-03 
                                         address_simple_Lake.City.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -7.749553e-03 
                                        address_simple_Lake.Point.Tower..JLT.Cluster.N..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.490463e-02 
                                        address_simple_Lake.Shore.Tower..JLT.Cluster.Y..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -8.053676e-03 
                                            address_simple_Lake.Terrace..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             6.349078e-03 
                                         address_simple_Lake.View.Tower..JLT.Cluster.B..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.644680e-03 
                                      address_simple_Lakeside.Residence..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             1.456767e-03 
                         address_simple_Lavender..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                       address_simple_Laya.Mansion..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.185007e-04 
                                    address_simple_Laya.Residences..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.289911e-03 
                                   address_simple_Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.246315e-03 
                 address_simple_Le.Grand.Chateau..Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.917148e-03 
                                                                           address_simple_LIV.Marina..Dubai.Marina..Dubai 
                                                                                                             2.004249e-02 
                                                                        address_simple_LIV.Residence..Dubai.Marina..Dubai 
                                                                                                             2.577317e-02 
                                      address_simple_Living.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.235775e-03 
                                    address_simple_LOCI.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_Lolena.Residence..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.615995e-02 
                                   address_simple_Lucky.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             9.118369e-03 
                                             address_simple_Luma21..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                            address_simple_Madina.Tower..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.867327e-04 
                                                                        address_simple_Mag.218.Tower..Dubai.Marina..Dubai 
                                                                                                            -7.915449e-03 
                                               address_simple_Mag.Tower..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                       address_simple_Magnolia..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                     address_simple_Manchester.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.735046e-02 
                          address_simple_Maple..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.102549e-03 
                                                                  address_simple_Marina.Arcade.Tower..Dubai.Marina..Dubai 
                                                                                                             1.326800e-02 
                                                                         address_simple_Marina.Crown..Dubai.Marina..Dubai 
                                                                                                            -8.065205e-03 
                                                      address_simple_Marina.Diamond..Marina.Diamonds..Dubai.Marina..Dubai 
                                                                                                            -2.468220e-02 
                                                             address_simple_Marina.Gate..Marina.Gate..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                 address_simple_Marina.Heights.Tower..Dubai.Marina..Dubai 
                                                                                                             5.145436e-03 
                                                                    address_simple_Marina.Opal.Tower..Dubai.Marina..Dubai 
                                                                                                            -7.546486e-03 
                                                                         address_simple_Marina.Pearl..Dubai.Marina..Dubai 
                                                                                                            -8.633451e-03 
                                                                      address_simple_Marina.Pinnacle..Dubai.Marina..Dubai 
                                                                                                            -3.971415e-02 
                                                           address_simple_Marina.Quays..Marina.Quays..Dubai.Marina..Dubai 
                                                                                                             2.739246e-02 
                                                   address_simple_Marina.Residence..Marina.Residence..Dubai.Marina..Dubai 
                                                                                                             1.898835e-04 
                                                                       address_simple_Marina.Terrace..Dubai.Marina..Dubai 
                                                                                                            -1.065281e-03 
                                                                         address_simple_Marina.Tower..Dubai.Marina..Dubai 
                                                                                                             2.085794e-04 
                                                 address_simple_Marina.View.Tower..Marina.View.Tower..Dubai.Marina..Dubai 
                                                                                                            -8.569357e-03 
                                                           address_simple_Marina.Wharf..Marina.Wharf..Dubai.Marina..Dubai 
                                                                                                             1.908883e-03 
                                      address_simple_Marwa.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.705416e-03 
                                   address_simple_Masaar.Residence..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.376113e-02 
                                          address_simple_MBL.Residences..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                               address_simple_MBL.Royal..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             5.188708e-03 
                 address_simple_MILANO.by.Giovanni.Boutique.Suites..JVC.District.17..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.986676e-03 
                       address_simple_Mulberry..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.251617e-04 
                                                     address_simple_Murjan..Murjan..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -1.110257e-02 
                                          address_simple_New.Dubai.Gate..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -1.189413e-02 
                                          address_simple_New.Dubai.Gate..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.050701e-02 
                                                                                address_simple_No..9..Dubai.Marina..Dubai 
                                                                                                             2.403985e-02 
                   address_simple_Noora.Residence..Noora.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.026847e-02 
                                            address_simple_O2.Residence..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                           address_simple_O2.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.294377e-03 
                                                                        address_simple_Ocean.Heights..Dubai.Marina..Dubai 
                                                                                                             1.126105e-02 
                                 address_simple_Orchidea.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.208229e-03 
                                                                          address_simple_Orra.Marina..Dubai.Marina..Dubai 
                                                                                                             1.767465e-02 
                                   address_simple_Oxford.Boulevard..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.439742e-03 
                                   address_simple_Oxford.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.636959e-03 
                                   address_simple_Oxford.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.523699e-04 
                                             address_simple_Oxford..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.756330e-03 
                                                             address_simple_Paloma..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             3.825618e-03 
                                 address_simple_Pantheon.Boulevard..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.498522e-04 
                                    address_simple_Pantheon.Elysee..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.435485e-02 
                                    address_simple_Pantheon.Elysee..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.278168e-02 
                                    address_simple_Pantheon.Elysee..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.115993e-02 
                                    address_simple_Park.View.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.244832e-03 
                                         address_simple_Park.Vista..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.322027e-03 
                                   address_simple_Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.420364e-03 
                                     address_simple_Plazzo.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             3.373953e-03 
                                                                       address_simple_Princess.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.501033e-03 
                              address_simple_Pulse.Smart.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -6.967061e-03 
                                     address_simple_Reef.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.491119e-03 
                                       address_simple_Regina.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.252888e-04 
                                   address_simple_Rigel.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                       address_simple_Rimal..Rimal..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -5.461484e-03 
                             address_simple_Rose..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.471632e-03 
                address_simple_Roxana.Residence..Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             5.851169e-04 
                                              address_simple_Saba.Tower..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                                                       address_simple_Sadaf..Sadaf..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                            -3.232979e-02 
                                       address_simple_Samana.Waves..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             2.020564e-02 
                                    address_simple_Sandoval.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.071653e-03 
                                                           address_simple_Sanibel.Tower..Park.Island..Dubai.Marina..Dubai 
                                                                                                             4.727649e-03 
                                                             address_simple_Se7en.City..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.842462e-04 
                                  address_simple_Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -1.855114e-02 
                                     address_simple_Serenity.Lakes..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.147273e-04 
                                  address_simple_Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -3.442319e-03 
               address_simple_Shamal.Residences..Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -7.541812e-04 
                                       address_simple_Shamal.Waves..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -5.632858e-03 
                                                       address_simple_Shams..Shams..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             0.000000e+00 
                                                            address_simple_Shemara..Marina.Promenade..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                            address_simple_Siena..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Signature.Livings..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.387876e-02 
                                                           address_simple_Silverene.Tower..Silverene..Dubai.Marina..Dubai 
                                                                                                             4.662013e-02 
                                                                        address_simple_Skyview.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.191575e-02 
                                     address_simple_Sobha.Daffodil..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                        address_simple_Sparkle.Tower..Sparkle.Towers..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                       address_simple_Sparkle.Towers..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                  address_simple_Spica.Residential..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -8.160924e-03 
                                                                         address_simple_Stella.Maris..Dubai.Marina..Dubai 
                                                                                                             2.249450e-02 
                                                                     address_simple_Studio.One.Tower..Dubai.Marina..Dubai 
                                                                                                             4.571366e-02 
                                                                         address_simple_Sulafa.Tower..Dubai.Marina..Dubai 
                                                                                                            -1.987193e-02 
                          address_simple_Summer..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                     address_simple_TFG.Marina.Hotel..Dubai.Marina..Dubai 
                                                                                                             1.198541e-02 
                                                address_simple_The.Address.Dubai.Marina..Mall.Hotel...Dubai.Marina..Dubai 
                                                                                                             4.044759e-02 
                     address_simple_The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai 
                                                                                                             5.422643e-02 
                                                                        address_simple_The.Belvedere..Dubai.Marina..Dubai 
                                                                                                            -9.343114e-03 
                                                          address_simple_The.Jewel.Tower..The.Jewels..Dubai.Marina..Dubai 
                                                                                                            -1.444878e-05 
                                      address_simple_The.Manhattan..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                            -2.259756e-02 
                                           address_simple_The.Palladium..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                             0.000000e+00 
                               address_simple_The.Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                            address_simple_The.Point..Dubai.Marina..Dubai 
                                                                                                             1.504118e-02 
                                        address_simple_The.Portman..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             6.280240e-03 
                                                                    address_simple_The.Royal.Oceanic..Dubai.Marina..Dubai 
                                                                                                            -1.566273e-02 
                                         address_simple_The.Sloane..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                   address_simple_The.Square.Tower..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                            address_simple_The.Torch..Dubai.Marina..Dubai 
                                                                                                            -1.417420e-02 
                                                           address_simple_The.Waves.Tower..The.Waves..Dubai.Marina..Dubai 
                                                                                                             0.000000e+00 
                                                                              address_simple_The.Zen..Dubai.Marina..Dubai 
                                                                                                            -1.060188e-02 
                                                                           address_simple_Time.Place..Dubai.Marina..Dubai 
                                                                                                            -1.230353e-02 
                                              address_simple_Tower..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             0.000000e+00 
                                                                      address_simple_Trident.Bayside..Dubai.Marina..Dubai 
                                                                                                            -2.394226e-04 
                                                              address_simple_Trident.Grand.Residence..Dubai.Marina..Dubai 
                                                                                                            -4.436164e-06 
                                         address_simple_Trident.Marinascape.Avant.Tower..Marinascape..Dubai.Marina..Dubai 
                                                                                                             2.192855e-03 
                                                address_simple_V3.Tower..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -5.955286e-04 
                                                         address_simple_Vida.Residences.Dubai.Marina..Dubai.Marina..Dubai 
                                                                                                             7.434269e-02 
                                                                          address_simple_West.Avenue..Dubai.Marina..Dubai 
                                                                                                             2.152658e-02 
                                                address_simple_Wind.Tower..Wind.Towers..Jumeirah.Lake.Towers..JLT...Dubai 
                                                                                                            -2.223345e-03 
                                                                            address_simple_Yacht.Bay..Dubai.Marina..Dubai 
                                                                                                            -5.072887e-04 
                                        address_simple_Zaya.Hameni..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai 
                                                                                                             1.235076e-02 
                                                                        address_simple_Zumurud.Tower..Dubai.Marina..Dubai 
                                                                                                             2.269544e-03 
                                                                                                  subdistrict_Bay.Central 
                                                                                                             1.266340e-02 
                                                                                                 subdistrict_Dubai.Marina 
                                                                                                             0.000000e+00 
                                                                         subdistrict_Dubai.Marina.Towers..Emaar.6.Towers. 
                                                                                                             2.514558e-02 
                                                                                             subdistrict_Emirates.Gardens 
                                                                                                            -1.529090e-02 
                                                                                           subdistrict_Emirates.Gardens.2 
                                                                                                            -2.171232e-02 
                                                                                                subdistrict_JLT.Cluster.A 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.C 
                                                                                                             5.299365e-03 
                                                                                                subdistrict_JLT.Cluster.D 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.E 
                                                                                                             0.000000e+00 
                                                                                                subdistrict_JLT.Cluster.J 
                                                                                                             1.355342e-03 
                                                                                                subdistrict_JLT.Cluster.K 
                                                                                                             4.387227e-02 
                                                                                                subdistrict_JLT.Cluster.L 
                                                                                                            -9.803433e-03 
                                                                                                subdistrict_JLT.Cluster.O 
                                                                                                            -1.441650e-03 
                                                                                                subdistrict_JLT.Cluster.Q 
                                                                                                            -7.686242e-04 
                                                                                                subdistrict_JLT.Cluster.R 
                                                                                                            -6.861743e-03 
                                                                                                subdistrict_JLT.Cluster.V 
                                                                                                            -1.766024e-03 
                                                                               subdistrict_Jumeirah.Beach.Residence..JBR. 
                                                                                                             5.082180e-02 
                                                                                   subdistrict_Jumeirah.Lake.Towers..JLT. 
                                                                                                             0.000000e+00 
                                                                                subdistrict_Jumeirah.Village.Circle..JVC. 
                                                                                                            -2.881410e-04 
                                                                                              subdistrict_JVC.District.10 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.11 
                                                                                                            -8.753703e-03 
                                                                                              subdistrict_JVC.District.12 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.13 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.14 
                                                                                                             2.379132e-02 
                                                                                              subdistrict_JVC.District.15 
                                                                                                             0.000000e+00 
                                                                                              subdistrict_JVC.District.18 
                                                                                                             0.000000e+00 
                                                                                                  subdistrict_Marina.Gate 
                                                                                                             1.043230e-01 
                                                                                             subdistrict_Marina.Promenade 
                                                                                                             4.301590e-02 
                                                                                                  subdistrict_Park.Island 
                                                                                                             8.160722e-03 
                                                                                            subdistrict_Seasons.Community 
                                                                                                            -3.426274e-02 
                                                                                             subdistrict_Tuscan.Residence 
                                                                                                            -1.933549e-02 
                                                                                                          subregion_10_86 
                                                                                                             0.000000e+00 
                                                                                                          subregion_11_62 
                                                                                                             9.667097e-04 
                                                                                                          subregion_11_69 
                                                                                                            -1.147518e-03 
                                                                                                          subregion_11_78 
                                                                                                            -1.687498e-02 
                                                                                                          subregion_11_79 
                                                                                                            -1.742415e-03 
                                                                                                          subregion_11_86 
                                                                                                             0.000000e+00 
                                                                                                          subregion_12_85 
                                                                                                            -1.353618e-03 
                                                                                                          subregion_12_88 
                                                                                                             1.992666e-02 
                                                                                                          subregion_13_81 
                                                                                                            -3.351887e-03 
                                                                                                          subregion_13_84 
                                                                                                             0.000000e+00 
                                                                                                          subregion_13_85 
                                                                                                            -8.966887e-07 
                                                                                                          subregion_19_62 
                                                                                                            -3.295955e-03 
                                                                                                           subregion_2_71 
                                                                                                             2.890405e-03 
                                                                                                           subregion_2_75 
                                                                                                            -1.036527e-02 
                                                                                                           subregion_2_76 
                                                                                                            -1.103718e-02 
                                                                                                          subregion_20_81 
                                                                                                             0.000000e+00 
                                                                                                          subregion_20_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_62 
                                                                                                             8.360478e-04 
                                                                                                          subregion_21_64 
                                                                                                             5.029249e-03 
                                                                                                          subregion_21_71 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_76 
                                                                                                             0.000000e+00 
                                                                                                          subregion_21_77 
                                                                                                            -2.011558e-03 
                                                                                                          subregion_21_81 
                                                                                                             9.949987e-04 
                                                                                                          subregion_21_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_22_69 
                                                                                                             0.000000e+00 
                                                                                                          subregion_22_70 
                                                                                                            -9.036569e-04 
                                                                                                          subregion_23_64 
                                                                                                             0.000000e+00 
                                                                                                          subregion_23_66 
                                                                                                             0.000000e+00 
                                                                                                          subregion_23_67 
                                                                                                            -7.033555e-04 
                                                                                                          subregion_23_68 
                                                                                                             2.422741e-04 
                                                                                                          subregion_23_70 
                                                                                                             1.586664e-03 
                                                                                                          subregion_23_71 
                                                                                                            -3.103037e-04 
                                                                                                          subregion_25_62 
                                                                                                            -1.092288e-02 
                                                                                                          subregion_25_87 
                                                                                                             0.000000e+00 
                                                                                                          subregion_27_70 
                                                                                                            -3.780541e-03 
                                                                                                          subregion_27_86 
                                                                                                            -3.217024e-03 
                                                                                                          subregion_28_11 
                                                                                                             0.000000e+00 
                                                                                                          subregion_28_70 
                                                                                                            -1.465661e-03 
                                                                                                          subregion_28_80 
                                                                                                            -7.813082e-04 
                                                                                                          subregion_29_75 
                                                                                                             0.000000e+00 
                                                                                                           subregion_3_61 
                                                                                                             4.782006e-03 
                                                                                                           subregion_3_73 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_75 
                                                                                                            -3.144643e-04 
                                                                                                          subregion_30_77 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_78 
                                                                                                            -4.503872e-04 
                                                                                                          subregion_30_80 
                                                                                                             0.000000e+00 
                                                                                                          subregion_30_86 
                                                                                                             1.709357e-03 
                                                                                                          subregion_31_76 
                                                                                                             5.021167e-04 
                                                                                                          subregion_38_23 
                                                                                                             0.000000e+00 
                                                                                                           subregion_4_74 
                                                                                                             0.000000e+00 
                                                                                                          subregion_40_11 
                                                                                                            -6.101521e-04 
                                                                                                           subregion_40_8 
                                                                                                             0.000000e+00 
                                                                                                           subregion_40_9 
                                                                                                            -2.840928e-03 
                                                                                                           subregion_41_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_43_17 
                                                                                                             4.050703e-03 
                                                                                                          subregion_43_28 
                                                                                                            -3.125131e-03 
                                                                                                           subregion_46_1 
                                                                                                             0.000000e+00 
                                                                                                          subregion_46_16 
                                                                                                             2.870146e-03 
                                                                                                           subregion_47_1 
                                                                                                             2.463905e-04 
                                                                                                           subregion_47_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_48_10 
                                                                                                             3.787755e-02 
                                                                                                           subregion_49_4 
                                                                                                             0.000000e+00 
                                                                                                           subregion_49_9 
                                                                                                            -9.806529e-04 
                                                                                                           subregion_50_5 
                                                                                                             1.255623e-03 
                                                                                                          subregion_51_23 
                                                                                                             0.000000e+00 
                                                                                                           subregion_51_9 
                                                                                                             0.000000e+00 
                                                                                                          subregion_52_12 
                                                                                                             0.000000e+00 
                                                                                                          subregion_52_13 
                                                                                                             5.787936e-03 
                                                                                                          subregion_52_23 
                                                                                                             5.718137e-04 
                                                                                                          subregion_53_10 
                                                                                                             0.000000e+00 
                                                                                                           subregion_53_9 
                                                                                                            -6.670680e-04 
                                                                                                          subregion_54_21 
                                                                                                             8.184495e-03 
                                                                                                          subregion_55_13 
                                                                                                            -4.871672e-04 
                                                                                                          subregion_55_22 
                                                                                                             2.948439e-03 
                                                                                                          subregion_55_23 
                                                                                                             2.352633e-03 
                                                                                                          subregion_56_40 
                                                                                                             0.000000e+00 
                                                                                                          subregion_57_24 
                                                                                                             0.000000e+00 
                                                                                                          subregion_57_26 
                                                                                                             7.968537e-04 
                                                                                                          subregion_58_13 
                                                                                                             0.000000e+00 
                                                                                                          subregion_58_44 
                                                                                                            -2.333831e-03 
                                                                                                          subregion_59_19 
                                                                                                             1.723636e-03 
                                                                                                          subregion_59_46 
                                                                                                            -3.982559e-03 
                                                                                                           subregion_6_65 
                                                                                                            -8.645704e-04 
                                                                                                           subregion_6_66 
                                                                                                             0.000000e+00 
                                                                                                           subregion_6_73 
                                                                                                             0.000000e+00 
                                                                                                          subregion_60_15 
                                                                                                            -4.776050e-04 
                                                                                                          subregion_60_20 
                                                                                                             0.000000e+00 
                                                                                                          subregion_60_43 
                                                                                                             0.000000e+00 
                                                                                                          subregion_61_16 
                                                                                                            -2.646675e-03 
                                                                                                          subregion_61_17 
                                                                                                            -2.066831e-03 
                                                                                                          subregion_61_40 
                                                                                                             1.476913e-03 
                                                                                                          subregion_62_16 
                                                                                                             1.476819e-03 
                                                                                                          subregion_62_45 
                                                                                                            -2.874632e-04 
                                                                                                          subregion_63_18 
                                                                                                            -7.209605e-03 
                                                                                                          subregion_65_17 
                                                                                                            -6.981023e-03 
                                                                                                          subregion_66_19 
                                                                                                            -3.345142e-03 
                                                                                                          subregion_66_22 
                                                                                                             1.465456e-03 
                                                                                                          subregion_66_52 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_20 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_25 
                                                                                                            -4.860628e-05 
                                                                                                          subregion_67_38 
                                                                                                             0.000000e+00 
                                                                                                          subregion_67_54 
                                                                                                             0.000000e+00 
                                                                                                          subregion_68_54 
                                                                                                             1.747220e-03 
                                                                                                          subregion_69_36 
                                                                                                            -1.924899e-03 
                                                                                                          subregion_69_57 
                                                                                                             0.000000e+00 
                                                                                                           subregion_7_75 
                                                                                                             3.123773e-03 
                                                                                                          subregion_70_40 
                                                                                                            -3.992516e-04 
                                                                                                          subregion_70_58 
                                                                                                             5.786484e-04 
                                                                                                          subregion_71_25 
                                                                                                            -2.578344e-03 
                                                                                                          subregion_71_43 
                                                                                                            -6.152861e-03 
                                                                                                          subregion_71_58 
                                                                                                             2.065815e-03 
                                                                                                          subregion_72_22 
                                                                                                            -4.723702e-03 
                                                                                                          subregion_72_45 
                                                                                                            -6.262334e-03 
                                                                                                          subregion_73_26 
                                                                                                             0.000000e+00 
                                                                                                          subregion_73_46 
                                                                                                            -6.503690e-03 
                                                                                                          subregion_74_25 
                                                                                                            -5.871557e-04 
                                                                                                          subregion_74_30 
                                                                                                            -5.209743e-03 
                                                                                                          subregion_75_28 
                                                                                                             0.000000e+00 
                                                                                                          subregion_75_32 
                                                                                                            -3.588982e-03 
                                                                                                          subregion_75_47 
                                                                                                            -5.940828e-03 
                                                                                                          subregion_76_28 
                                                                                                            -4.173390e-03 
                                                                                                          subregion_76_33 
                                                                                                            -3.825356e-03 
                                                                                                          subregion_76_35 
                                                                                                             0.000000e+00 
                                                                                                          subregion_79_39 
                                                                                                             0.000000e+00 
                                                                                                          subregion_80_56 
                                                                                                             0.000000e+00 
                                                                                                          subregion_83_52 
                                                                                                            -6.917576e-04 
                                                                                                          subregion_85_47 
                                                                                                            -6.830990e-03 
                                                                                                          subregion_89_52 
                                                                                                            -5.482304e-04 
                                                                                                           subregion_9_84 
                                                                                                             0.000000e+00 
                                                                            community_Jumeirah.Beach.Residence..JBR._beds 
                                                                                                             1.255343e-02 
                                                                            community_Jumeirah.Beach.Residence..JBR._area 
                                                                                                             3.662232e-02 
                                                                           community_Jumeirah.Beach.Residence..JBR._baths 
                                                                                                             0.000000e+00 
                                                                         community_Jumeirah.Beach.Residence..JBR._balcony 
                                                                                                             4.822442e-03 
                                                                         community_Jumeirah.Beach.Residence..JBR._parking 
                                                                                                             0.000000e+00 
                                                                   community_Jumeirah.Beach.Residence..JBR._swimming_pool 
                                                                                                             0.000000e+00 
                                                                       community_Jumeirah.Beach.Residence..JBR._furnished 
                                                                                                             0.000000e+00 
                                                                                community_Jumeirah.Lake.Towers..JLT._beds 
                                                                                                            -5.604464e-03 
                                                                                community_Jumeirah.Lake.Towers..JLT._area 
                                                                                                             1.824571e-02 
                                                                               community_Jumeirah.Lake.Towers..JLT._baths 
                                                                                                            -1.633519e-03 
                                                                             community_Jumeirah.Lake.Towers..JLT._balcony 
                                                                                                             4.228136e-03 
                                                                             community_Jumeirah.Lake.Towers..JLT._parking 
                                                                                                            -6.753472e-04 
                                                                       community_Jumeirah.Lake.Towers..JLT._swimming_pool 
                                                                                                             0.000000e+00 
                                                                           community_Jumeirah.Lake.Towers..JLT._furnished 
                                                                                                             4.164235e-03 
                                                                             community_Jumeirah.Village.Circle..JVC._beds 
                                                                                                             0.000000e+00 
                                                                             community_Jumeirah.Village.Circle..JVC._area 
                                                                                                             1.366047e-02 
                                                                            community_Jumeirah.Village.Circle..JVC._baths 
                                                                                                             1.627607e-02 
                                                                          community_Jumeirah.Village.Circle..JVC._balcony 
                                                                                                             0.000000e+00 
                                                                          community_Jumeirah.Village.Circle..JVC._parking 
                                                                                                            -1.130424e-03 
                                                                    community_Jumeirah.Village.Circle..JVC._swimming_pool 
                                                                                                            -1.978532e-03 
                                                                        community_Jumeirah.Village.Circle..JVC._furnished 
                                                                                                             0.000000e+00 
                                                                                                                  area_sq 
                                                                                                            -1.061418e-01 
                                                                                                                   bed_sq 
                                                                                                            -2.893027e-02 
                                                                                                                 baths_sq 
                                                                                                             0.000000e+00 

$ypred
       1        2        3        4        5        6        7        8        9       10       11 
13.22859 13.31655 14.34866 12.75356 13.67503 13.18122 13.79200 14.40198 14.06994 13.11478 15.03918 
      12       13       14       15       16       17       18       19       20       21       22 
13.99642 14.11292 14.51888 13.99673 14.37607 13.33334 13.54886 13.90946 13.32649 14.07074 14.29502 
      23       24       25       26       27       28       29       30       31       32       33 
13.32843 13.29574 13.65685 13.47629 13.36969 13.59028 14.45762 13.40180 14.01898 14.51436 14.24418 
      34       35       36       37       38       39       40       41       42       43       44 
13.34489 13.31803 13.86845 13.47890 14.36184 14.22167 14.47377 13.00044 14.38076 13.31501 13.43960 
      45       46       47       48       49       50       51       52       53       54       55 
12.91358 14.01637 13.24901 14.11499 13.68585 13.68807 14.25090 13.35910 15.00127 13.29239 14.09525 
      56       57       58       59       60       61       62       63       64       65       66 
12.88044 13.27600 14.11645 14.31582 13.49985 13.91704 14.25620 14.10779 14.70470 13.68015 14.17593 
      67       68       69       70       71       72       73       74       75       76       77 
13.25054 13.38268 12.85181 14.00066 13.22144 12.96902 14.07724 13.65560 13.38812 13.75262 14.31969 
      78       79       80       81       82       83       84       85       86       87       88 
14.91468 14.11392 13.53300 14.42384 14.23248 13.34530 12.86373 13.80554 14.97704 14.52066 13.56707 
      89       90       91       92       93       94       95       96       98       99      100 
13.57384 13.31012 13.04667 13.27195 12.84466 14.91840 14.64475 14.10732 14.30679 14.07275 13.76089 
     101      102      103      104      105      106      107      108      109      110      111 
13.27414 14.41272 13.69596 13.84184 14.80274 14.23750 12.70953 15.10209 13.14599 12.99095 13.72730 
     112      113      114      115      116      117      118      119      120      121      122 
13.36732 13.76873 14.39684 14.07884 13.59851 14.19553 14.07238 14.37190 14.40686 13.96565 12.96946 
     123      124      125      126      127      128      129      130      131      132      133 
14.21917 14.57760 14.17366 13.08269 14.10350 15.13328 13.17014 13.61034 14.82952 13.32778 13.06038 
     134      135      136      137      138      139      140      141      142      143      144 
13.71798 14.36235 14.12069 13.78328 13.68686 14.07098 13.09131 13.79645 14.35718 12.98359 13.36201 
     145      147      148      149      150      151      152      153      154      155      156 
13.77150 13.28115 14.09931 13.91137 14.75703 13.41778 14.66636 13.22836 13.34163 13.32857 14.22789 
     157      158      159      160      161      162      163      164      165      166      167 
14.30998 12.54107 14.46813 13.80178 14.88551 13.38673 14.48076 12.84144 13.91973 12.88508 14.13334 
     168      169      170      171      172      173      174      175      176      177      178 
14.91674 13.58664 13.59971 14.15971 13.36296 13.11939 14.37190 13.41534 12.77282 14.61830 13.82330 
     179      180      181      182      183      184      185      186      187      188      189 
14.10365 14.05721 14.47325 13.34741 14.20064 13.38427 13.47620 13.14174 13.56526 14.11445 14.93357 
     190      191      192      193      194      195      196      197      198      199      200 
14.07984 14.23881 13.54160 14.35621 13.44156 13.31828 13.43990 14.27417 14.90881 13.02750 13.84983 
     201      202      203      204      205      206      207      208      209      210      211 
14.17918 13.92293 13.07696 14.16745 14.11925 14.43451 13.86808 14.10605 15.29968 12.49115 13.82982 
     212      213      214      215      216      217      218      219      220      221      222 
13.05735 14.23358 13.67062 13.63097 13.66788 13.56420 12.94875 13.86149 13.49385 14.33659 12.77571 
     223      224      225      226      227      228      229      230      231      232      233 
13.70346 13.75909 14.73204 14.50229 13.04882 13.60055 12.90255 13.72083 14.14447 14.30230 13.88014 
     234      235      236      237      238      239      240      241      242      243      244 
14.29980 13.60296 13.70419 14.36087 14.11509 14.00007 13.95561 13.34610 13.64203 14.01114 13.92197 
     245      246      247      248      249      250      251      252      253      254      255 
14.44991 13.47436 14.07332 14.46881 12.91755 13.41408 13.85071 12.89741 14.12205 13.30016 13.33338 
     256      257      258      259      260      261      262      263      264      265      266 
13.40107 13.42488 14.86834 14.01563 13.74322 14.37479 13.82021 13.36865 13.80300 13.27236 13.20218 
     267      268      269      270      271      272      273      274      275      276      277 
13.56651 13.34341 14.09031 14.38738 14.07074 13.21160 14.53917 13.34852 14.48057 13.89927 14.32015 
     278      279      280      281      282      283      284      285      286      287      288 
14.28493 13.23648 13.88498 13.88086 14.23812 13.75031 13.62614 13.94502 13.62458 14.13697 14.53302 
     289      290      291      292      293      294      295      296      297      298      299 
14.03428 13.17443 13.24550 13.85282 14.36957 14.16868 13.20179 14.41239 14.64693 13.59374 13.87839 
     300      301      302      303      304      305      306      307      308      309      310 
13.30772 13.38383 13.51658 14.23692 13.66653 12.84577 12.91523 14.33835 14.13083 13.11684 13.41965 
     311      312      313      314      315      316      317      318      319      321      322 
13.69596 14.93550 13.85099 13.30264 12.81090 13.73600 13.88086 13.40721 12.92486 14.34360 13.83877 
     323      324      325      326      328      329      330      331      332      333      334 
13.37236 13.22598 12.87993 13.37583 13.00495 14.90420 13.12423 14.34068 14.65473 13.39712 14.11552 
     335      336      337      338      339      340      341      342      343      344      345 
13.64913 13.40096 13.80634 13.32115 13.66429 14.16040 14.41644 13.34783 14.20505 14.50483 13.24240 
     346      347      348      349      350      351      352      353      354      355      356 
13.24971 13.55727 14.14217 14.05587 13.51797 14.52592 13.32660 15.10209 13.33747 13.67091 14.20455 
     357      358      359      360      361      362      363      364      365      366      367 
14.07900 13.50961 14.16915 14.05164 13.96902 14.62690 14.19097 15.10209 13.92183 14.87851 14.16216 
     368      369      370      371      372      373      374      375      376      377      378 
14.22568 13.50695 13.35676 13.61195 12.79407 14.86654 14.00764 13.80025 13.77371 14.11499 13.40580 
     379      380      381      382      383      384      385      386      387      388      389 
13.78688 13.76157 13.99940 14.91030 14.11809 13.85153 12.93496 13.80178 13.94068 13.25920 13.64101 
     390      391      392      393      394      395      396      397      398      399      400 
14.79194 13.78623 13.56506 12.41435 14.22866 13.86575 14.02784 12.99118 13.00620 14.09181 13.62345 
     401      402      403      404      405      406      407      408      409      412      413 
13.72710 13.34783 13.52382 14.07161 14.04619 12.55996 13.32243 13.75694 13.38621 14.34742 13.56258 
     414      415      416      417      418      419      420      421      422      423      424 
14.04970 14.24337 14.05820 14.27486 12.87771 14.01540 13.37842 14.88919 14.48482 13.69871 13.33446 
     425      426      427      428      429      430      431      432      433      434      435 
13.14136 13.93143 13.61848 14.07074 14.06605 14.23256 15.07957 14.24552 13.54363 13.25964 13.80494 
     436      437      439      440      441      442      443      444      445      446      447 
13.52714 13.01439 13.35737 12.84842 14.23111 13.21990 13.41012 13.77545 13.81906 14.61597 14.39279 
     448      449      450      451      452      453      454      455      456      457      458 
13.39095 13.38272 14.45605 13.99150 13.34746 15.08834 13.24720 14.47894 13.79471 13.27938 14.08384 
     459      460      461      462      464      465      466      467      468      469      470 
13.04824 13.74953 13.95598 12.82089 13.22344 13.68296 13.64631 13.71729 14.27742 14.21063 14.25623 
     471      472      473      474      475      476      477      478      479      480      481 
14.91074 13.53170 14.17010 13.31885 13.67760 13.97794 13.49272 14.14164 13.86936 13.61090 13.53914 
     482      483      484      485      486      487      488      489      490      491      492 
12.98066 14.05788 14.00554 14.04664 14.34279 14.58851 12.99903 13.19506 13.45807 14.34197 13.35615 
     493      494      495      496      497      498      499      500      501      502      503 
14.34739 14.66001 13.16454 13.93280 13.38508 14.88241 14.49920 14.20552 14.10025 13.32513 13.80877 
     504      505      506      507      508      509      510      511      512      513      514 
12.93971 13.65525 15.13680 12.95281 14.90004 13.65898 14.47389 15.07753 13.07771 13.57117 15.07794 
     515      516      517      518      519      520      521      522      523      524      525 
14.15751 14.41335 14.90420 13.11873 14.64704 13.24557 13.66794 13.47273 13.60918 13.58125 13.41291 
     526      527      528      529      530      531      532      533      534      535      536 
13.19212 14.37316 14.21298 13.70172 13.22162 13.63663 13.98455 14.07178 13.54519 14.26266 14.10350 
     537      538      539      540      541      542      543      544      545      546      547 
14.33899 14.10779 14.20238 13.56653 13.84631 14.15530 15.10996 13.42933 13.46621 14.93121 13.25226 
     548      549      550      551      552      553      554      555      556      557      558 
13.62862 13.86647 13.42450 15.15070 13.51384 13.73283 14.24367 13.92740 13.73143 15.08834 14.28124 
     559      560      561      562      563      564      565      566      567      568      569 
13.90812 13.36832 14.03898 13.24927 13.47400 13.68150 14.26697 13.71834 13.43459 14.17589 12.84753 
     570      571      572      573      574      575      576      577      578      579      580 
12.94134 14.13642 12.55568 14.68551 14.24128 14.04630 14.21766 13.64051 14.49040 12.99762 13.76347 
     581      582      583      584      585      586      587      588      589      590      591 
13.72933 13.71427 13.71500 13.68033 14.06962 13.86601 13.89818 12.92672 13.14467 13.35262 13.72096 
     592      593      594      595      596      597      598      599      600      601      602 
14.78236 13.32818 13.68807 14.05595 14.11499 13.67286 14.22186 13.61446 12.93816 14.07573 13.77124 
     603      604      605      606      607      608      609      610      611      612      613 
13.29845 13.84420 13.75483 14.92065 14.52904 14.71671 14.68598 12.81053 14.13083 13.74298 14.50488 
     614      615      616      617      618      619      620      621      622      623      624 
14.58966 14.33771 12.82580 14.79194 13.45633 14.11808 14.34104 13.29113 13.97067 14.17010 13.78829 
     625      626      627      628      629      630      631      632      633      635      636 
14.15558 14.48226 13.41099 13.35388 14.78534 14.31934 14.23195 12.79456 13.53307 14.41298 14.51922 
     637      638      639      640      641      642      643      644      645      646      647 
14.46716 13.60399 13.67729 13.70665 12.87497 14.24215 13.80581 14.42724 14.71688 13.15268 13.33719 
     648      649      650      651      652      653      654      655      656      657      658 
14.11445 14.13859 13.78391 12.50451 13.66963 13.69409 13.06729 13.35018 13.94806 14.10529 13.38372 
     659      660      661      662      663      664      665      666      667      668      669 
13.02267 13.12077 13.01490 14.45546 14.49359 13.65893 14.16837 14.45801 13.62552 13.47479 14.02941 
     670      671      672      673      674      675      676      677      678      679      680 
14.07367 12.74659 13.55331 13.60745 13.14154 14.52096 14.67663 14.21093 13.27103 14.87430 13.77533 
     681      682      683      684      685      686      687      688      689      690      691 
14.06292 13.06440 14.28837 13.38621 13.21715 13.07584 13.83030 13.31447 14.23873 13.09194 14.02784 
     692      693      694      695      696      697      698      699      700      701      702 
14.22954 13.25692 14.45087 14.65008 13.28115 12.84233 13.31666 13.72726 13.83404 14.20172 14.61936 
     703      704      705      706      707      708      709      710      711      712      713 
13.59969 13.43156 13.31043 14.15466 14.44411 13.16257 14.16421 14.02971 13.55300 13.70419 13.03194 
     714      715      716      717      718      719      720      721      722      723      724 
14.87839 14.18326 13.41905 14.36398 14.30071 14.03949 14.74407 13.64784 13.61911 14.39499 13.27306 
     725      726      727      728      729      730      731      732      733      734      735 
13.72646 13.76669 14.02223 14.60126 14.16837 14.38347 13.00495 14.38781 14.63983 14.23225 13.94025 
     736      737      738      739      740      741      742      743      744      745      746 
13.10254 14.00716 13.32488 14.35990 13.57529 13.99469 13.24608 13.48311 14.91165 13.25766 14.49469 
     748      749      750      751      752      753      754      755      756      757      758 
14.00423 13.56511 14.17707 13.85756 13.81458 14.10249 13.82171 13.60966 13.27380 13.98417 13.66594 
     759      760      761      762      763      764      765      766      767      768      769 
13.22727 13.02631 13.55639 14.39588 13.94723 12.75716 13.24770 13.62101 14.13042 14.05788 14.10100 
     770      771      772      773      774      775      776      777      778      779      780 
14.69417 14.37754 13.33819 14.36388 13.36684 14.91841 13.27414 14.40766 12.93262 13.03369 14.56755 
     781      782      783      784      785      786      787      788      789      790      791 
15.07783 14.49638 12.97924 13.90398 14.96204 13.37045 13.94450 14.64151 13.61444 13.77350 14.90611 
     792      793      794      795      796      797      798      799      800      801      802 
13.54071 14.16014 13.87154 14.61034 14.91074 13.87815 14.07074 13.38508 13.68688 13.32202 14.78758 
     803      804      805      806      807      808      809      810      811      812      813 
14.91772 14.56543 13.28644 14.14090 13.66599 14.13499 14.26634 13.23525 12.81715 14.97574 13.94328 
     814      815      816      817      818      819      820      821      822      823      824 
13.60791 13.79917 13.44010 14.11445 13.82162 13.95743 13.24329 14.90881 14.17918 13.44739 13.58347 
     825      826      827      828      829      830      831      832      833      834      835 
13.41183 14.14280 13.19296 14.22294 14.89127 13.62634 13.69566 13.09624 14.80060 14.16245 14.40766 
     836      837      838      839      840      841      842      843      844      845      846 
13.31756 12.87737 14.39515 13.94106 13.75569 14.48839 13.75638 14.29156 13.20912 12.97762 14.47467 
     847      848      849      850      851      852      853      854      855      856      857 
13.35550 13.43455 14.61669 14.11499 14.64727 14.92852 14.54630 14.54443 13.60444 13.13155 14.24543 
     858      859      860      861      862      863      864      865      866      867      868 
13.29545 13.36631 13.19506 13.80843 15.12799 14.08154 13.27257 13.23747 13.97898 14.24382 13.66794 
     869      870      871      872      873      874      875      876      877      878      879 
12.91106 14.52120 14.49795 13.62276 14.14103 13.68984 14.01187 13.39012 14.08086 13.76107 13.69887 
     880      881      882      883      884      885      886      887      888      889      890 
14.33878 13.33799 14.53565 13.28720 14.02662 14.60228 13.96479 13.80843 13.68550 13.62703 13.99408 
     891      892      893      894      895      896      897      898      899      900      901 
13.08772 13.82549 13.98500 13.76090 13.29338 13.82024 13.15979 13.91828 14.11177 13.01235 14.93112 
     902      903      904      905      906      907      908      909      910      911      912 
14.88924 15.10878 14.88598 14.67151 13.30893 13.90268 13.86954 13.87368 14.01248 13.21519 14.09449 
     913      914      915      916      917      918      919      920      921      922      923 
13.50961 13.96968 13.42125 14.46923 13.75080 14.15971 14.90096 13.32547 13.16166 13.39599 13.69424 
     924      925      926      927      928      929      930      931      932      933      934 
14.94348 13.71720 15.08574 13.58018 12.94926 14.56059 13.29112 14.33004 13.55968 13.37804 14.46935 
     935      936      937      938      939      940      941      942      943      944      945 
12.94926 14.36461 13.49331 13.37622 13.69707 14.10982 13.91209 14.33753 14.94348 13.35884 13.50429 
     946      947      948      949      950      951      952      953      954      955      956 
13.21625 14.60762 14.10532 13.99279 14.42194 13.90301 13.77685 12.94754 13.67071 13.68626 14.60170 
     957      958      959      960      961      962      963      964      965      966      967 
14.09151 13.09009 14.34626 14.86357 14.13693 13.95335 14.38277 13.78256 14.15703 13.76725 14.42041 
     968      969      970      971      972      973      974      975      976      977      978 
12.99041 14.32902 14.55890 14.40777 14.79450 14.17164 13.76133 13.70504 13.59323 12.98910 13.44351 
     979      980      981      982      983      984      985      986      987      988      989 
13.56877 13.37776 14.52472 14.14173 13.42079 13.32042 13.81077 13.29130 13.48722 13.39310 13.95335 
     990      991      992      993      994      995      996      997      998      999     1000 
14.41044 14.43753 13.94411 15.12424 13.93670 13.54831 14.68729 13.76952 14.71698 14.38662 14.89424 
    1002     1003     1004     1005     1006     1007     1008     1009     1010     1011 
13.75012 13.40326 13.61032 13.21077 13.10768 12.91869 13.52866 14.20867 13.27435 14.01476 
 [ reached getOption("max.print") -- omitted 22432 entries ]

$lambda.opt
[1] 0.0003128941

$lambda
NA
# Lambda
fit.lasso_ebic$lambda.opt
[1] 0.0003128941

Ouput coefficients

# Extract coefficients
coef_lasso_ebic <- fit.lasso_ebic$coef
coef_matrix_ebic <- as.matrix(coef_lasso_ebic)

# Output non zero coefficients
non_zero <- coef_matrix_ebic !=0
coef_table_ebic <- data.frame(Variable = rownames(coef_matrix_ebic)[non_zero], Coefficients = coef_matrix_ebic[non_zero])
coef_table_ebic <- coef_table_ebic[order(-abs(coef_table_ebic$Coefficients)),]
coef_table_ebic$Coefficients <- round(coef_table_ebic$Coefficients, digits = 4)
coef_table_ebic$Coefficients <- format(coef_table_ebic$Coefficients, scientific = FALSE)

Ouput collapsed coeffs

# Group prefixes for regression output
coef_table_ebic_output <- coef_table_ebic %>%
  mutate(prefix = case_when(
    str_detect(Variable, "address_simple_") ~ "Address indicators",
    str_detect(Variable, "AED_") ~ "AED exchange rates",
    str_detect(Variable, "comm_") ~ "Comm variables",
    str_detect(Variable, "community_") ~ "Community indicators",
    str_detect(Variable, "emirate_") ~ "Emirate variables",
    str_detect(Variable, "area_sq") ~ "Area squared",
    str_detect(Variable, "area") ~ "Area",
    str_detect(Variable, "balcony") ~ "# Balconys",
    str_detect(Variable, "baths_sq") ~ "# Balconys squared",
    str_detect(Variable, "bed_sq") ~ "# Beds squared",
    str_detect(Variable, "bed") ~ "# Beds",
    str_detect(Variable, "furnished") ~ "# Furnished indicator",
    str_detect(Variable, "gold") ~ "Gold price",
    str_detect(Variable, "metro") ~ "Distance to metro",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "lon") ~ "Longitude",
    str_detect(Variable, "gdp") ~ "GDP",
    str_detect(Variable, "hospital") ~ "Distance to hospital",
    str_detect(Variable, "subregion") ~ "Region indicators (by geographic coordinates)",
    str_detect(Variable, "market") ~ "Distance to grocery store",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "subdistrict") ~ "Subdistrict indicators",
    str_detect(Variable, "swimming_pool") ~ "Swimming pool indicator",
    str_detect(Variable, "USD_BTC") ~ "USC-crypto exchange rate",
    str_detect(Variable, "USD_ETH") ~ "USC-crypto exchange rate",
    str_detect(Variable, "PC1_demand") ~ "PCA 1 demand",
    str_detect(Variable, "PC2_demand") ~ "PCA 2 demand",
    str_detect(Variable, "PC2_demand") ~ "PCA 3 demand",
    str_detect(Variable, "PC1_offer") ~ "PCA 1 offer",
    str_detect(Variable, "PC2_offer") ~ "PCA 2 offer",
    str_detect(Variable, "PC3_offer") ~ "PCA 3 offer",
    str_detect(Variable, "(Intercept)") ~ "(Intercept)",
    TRUE ~ "Misc" # For all other cases
  ))
# Collapse the dataframe to only keep the first instance of each prefix
# and count the number of variables of each type
coef_table_ebic_output$Coefficients <- as.numeric(coef_table_ebic_output$Coefficients)
collapsed_coef_matrix_ebic <- coef_table_ebic_output %>%
  group_by(prefix) %>%
  summarise(Mean = mean(100*Coefficients),
            Min = min(100*Coefficients),
            Max = max(100*Coefficients),
            Count = n()) %>%
  mutate(Mean = round(Mean, 2),
         Min = round(Min, 2),
         Max = round(Max, 2)) %>%
  arrange(desc(Count))  # Sorting by Max in descending order

LASSO CV

Fit model

# Fit model
fit.lasso = cv.glmnet(x=as.matrix(x_train_df), y=y_train, nfolds=10)
fit.lasso

Call:  cv.glmnet(x = as.matrix(x_train_df), y = y_train, nfolds = 10) 

Measure: Mean-Squared Error 

       Lambda Index Measure        SE Nonzero
min 4.041e-05   100 0.01855 0.0002298     429
1se 2.157e-04    82 0.01877 0.0002370     389
fit.lasso$lambda.min
[1] 4.041183e-05

###Test out of sample

# TEST: RMSE: 330771.3 MAPE: 14.14537 MAE: 186598.
q <- regression_metrics(fit.lasso, x_test_df, y_test, num_scale, y_test_orig)

RMSE: 351815.4 MAPE: 14.31921 MAE: 190308.5
# TRAIN: RMSE: 222874.8 MAPE: 10.37756 MAE: 142418.3
q <- regression_metrics(fit.lasso, x_train_df, y_train, num_scale, y_train_orig)

RMSE: 222038.4 MAPE: 10.32757 MAE: 141756.4

Ouput coefficients

# Extract coefficients
coef_lasso <- predict(fit.lasso, type = "coefficients", s = fit.lasso$lambda.min)
coef_matrix <- as.matrix(coef_lasso)

# Output non zero coefficients
non_zero <- coef_matrix !=0
coef_table <- data.frame(Variable = rownames(coef_matrix)[non_zero], Coefficients = coef_matrix[non_zero])
coef_table <- coef_table[order(-abs(coef_table$Coefficients)),]
coef_table$Coefficients <- round(coef_table$Coefficients, digits = 4)
coef_table$Coefficients <- format(coef_table$Coefficients, scientific = FALSE)

Ouput collapsed coeffs

# Group prefixes for regression output
coef_table <- coef_table %>%
  mutate(prefix = case_when(
    str_detect(Variable, "address_simple_") ~ "Address indicators",
    str_detect(Variable, "AED_") ~ "AED exchange rates",
    str_detect(Variable, "comm_") ~ "Comm variables",
    str_detect(Variable, "community_") ~ "Community indicators",
    str_detect(Variable, "emirate_") ~ "Emirate variables",
    str_detect(Variable, "area_sq") ~ "Area squared",
    str_detect(Variable, "area") ~ "Area",
    str_detect(Variable, "balcony") ~ "# Balconys",
    str_detect(Variable, "baths_sq") ~ "# Balconys squared",
    str_detect(Variable, "bed_sq") ~ "# Beds squared",
    str_detect(Variable, "bed") ~ "# Beds",
    str_detect(Variable, "furnished") ~ "# Furnished indicator",
    str_detect(Variable, "gold") ~ "Gold price",
    str_detect(Variable, "metro") ~ "Distance to metro",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "lon") ~ "Longitude",
    str_detect(Variable, "gdp") ~ "GDP",
    str_detect(Variable, "hospital") ~ "Distance to hospital",
    str_detect(Variable, "subregion") ~ "Region indicators (by geographic coordinates)",
    str_detect(Variable, "market") ~ "Distance to grocery store",
    str_detect(Variable, "parking") ~ "Parking indicator",
    str_detect(Variable, "subdistrict") ~ "Subdistrict indicators",
    str_detect(Variable, "swimming_pool") ~ "Swimming pool indicator",
    str_detect(Variable, "USD_BTC") ~ "USC-crypto exchange rate",
    str_detect(Variable, "PC1_demand") ~ "PCA 1 demand",
    str_detect(Variable, "PC2_demand") ~ "PCA 2 demand",
    str_detect(Variable, "PC2_demand") ~ "PCA 3 demand",
    str_detect(Variable, "PC1_offer") ~ "PCA 1 offer",
    str_detect(Variable, "PC2_offer") ~ "PCA 2 offer",
    str_detect(Variable, "PC3_offer") ~ "PCA 3 offer",
    str_detect(Variable, "(Intercept)") ~ "(Intercept)",
    TRUE ~ "Misc" # For all other cases
  ))
# Collapse the dataframe to only keep the first instance of each prefix
# and count the number of variables of each type
coef_table$Coefficients <- as.numeric(coef_table$Coefficients)
collapsed_coef_matrix <- coef_table %>%
  group_by(prefix) %>%
  summarise(Mean = mean(100*Coefficients),
            Min = min(100*Coefficients),
            Max = max(100*Coefficients),
            Count = n()) %>%
  mutate(Mean = round(Mean, 2),
         Min = round(Min, 2),
         Max = round(Max, 2)) %>%
  arrange(desc(Count))  # Sorting by Max in descending order

Investigate percentage error

# Average percentage error 
pred <- predict(fit.lasso, newx = as.matrix(x_test_df), s = fit.lasso$lambda.min, type = "response")
  
if (log_price) {
    pred <- exp(pred)
    y_test <- y_test_orig
}

compare_df <- data.frame(y_test = y_test, predictions = pred)
compare_df$perc_error <- abs((compare_df$y_test-compare_df$s1)/compare_df$y_test)*100
compare_df$error <- abs(compare_df$s1 -compare_df$y_test)

# Calculate the deciles
deciles <- quantile(compare_df$perc_error, probs = seq(0, 1, by = 0.1), na.rm = TRUE)
print(deciles)
          0%          10%          20%          30%          40%          50%          60% 
6.216556e-03 2.039516e+00 3.911439e+00 6.156523e+00 8.551416e+00 1.100608e+01 1.383982e+01 
         70%          80%          90%         100% 
1.738460e+01 2.192804e+01 2.924770e+01 2.149165e+02 

Graphs

# Prepare data for graphs 
test_graph <- data.frame(x_test_unscaled)
test_graph$perc_error <- compare_df$perc_error
test_graph$error  <- compare_df$error

test_graph$price <- compare_df$y_test
test_graph 
# Graph abs error
plot_abs_error<- ggplot(test_graph, aes(x = price, y = error)) +
  theme_minimal() +
  geom_point(color = '#1f77b4' ,size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Absolute Error") + 
    theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) 
plot_abs_error

# Graph prediction error

#Prepare data
test_graph_dt <- test_graph %>% as.data.table

test_graph_dt[, community := 'Dubai Marina']

test_graph_dt<- test_graph_dt %>%
  .[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
  .[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
  .[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']


plot_perc_error_community <- ggplot(test_graph_dt[test_graph_dt$perc_error < 100], 
                                    aes(y=community, x=perc_error, color=community)) + 
  geom_violin(aes(fill = community,
                  fill = after_scale(colorspace::lighten(fill, .2))),
              draw_quantiles = c(0.05, 0.25, 0.5, 0.75, 0.95),
              size = 0.2, scale='width', colour = "black") +
  stat_summary(fun=mean, geom="point", shape=16, size=3, color="black") + # Highlight the mean in red
  theme_minimal() + 
  theme(legend.position="none",
        text = element_text(size = 16), 
        axis.title = element_text(size = 16),
        axis.text = element_text(size = 10),
        axis.ticks = element_line(size = 0.8),
        axis.title.y.left=element_text(color="black", size=14),
        axis.text.y.left=element_text(color="black", size=12),
        axis.title.y.right=element_text(color="black", size=14),
        axis.text.y.right=element_text(color="black", size=14),
        axis.text.x=element_text(size=12),
        axis.title.x=element_text(size=16),
        plot.title = element_text(hjust = 0.5, size = 16, face = "bold")) +
  scale_x_continuous(labels = scales::comma) +
  labs(y='', x="Prediction Error (%)") 
Warning: Duplicated aesthetics after name standardisation: fill
plot_perc_error_community

# Graph percentage error
plot_perc_error<- ggplot(test_graph, aes(x = price, y = perc_error)) +
  theme_minimal() +
  geom_point(color = '#1f77b4' ,size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Percentage Error") + 
    theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) 
test_graph$community_var <- test_graph_dt$community

dubai_marina_data <- test_graph %>% 
  filter(community_var == 'Dubai Marina')

# Graph percentage error for Dubai Marina
plot_perc_error<- ggplot(dubai_marina_data, aes(x = price, y = perc_error)) +
  theme_minimal() +
  geom_point(color = '#1f77b4' ,size = 0.5) +  # Scatter plot points
  xlab("Price") +
  ylab("Percentage Error") + 
    theme(legend.position="none",
        text = element_text(size = 16),  # Adjust the font size here
        axis.title = element_text(size = 16),  # Adjust the title font size
        axis.text = element_text(size = 10)) +  # Adjust the axis text font size
  scale_x_continuous(labels = scales::comma) 
# Summary table 
summary_table <- test_graph_dt %>%
  group_by(community) %>%
  summarise(
    Q1 = paste0(round(quantile(perc_error, 0.25, na.rm = TRUE), 2), "%"),
    Median = paste0(round(median(perc_error, na.rm = TRUE) , 2), "%"),
    Mean = paste0(round(mean(perc_error, na.rm = TRUE), 2), "%"),
    Q3 = paste0(round(quantile(perc_error, 0.75, na.rm = TRUE), 2), "%"),
  )
# Get community variable
train_dt <- raw_train %>% as.data.table

train_dt[, community := 'Dubai Marina']

train_dt<- train_dt %>%
  .[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
  .[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
  .[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']


# Understand high prediction errors
investigate_train <-cbind(exp(y_train_df), address = raw_train$address_simple, subdistrict =raw_train$subdistrict, community = train_dt$community)
                            
investigate_test <-cbind(exp(y_test_df), prediction = pred, test_graph_dt$perc_error, address = raw_test$address_simple, subdistrict =raw_test$subdistrict, community = test_graph_dt$community)

# Caculate mean values by region in train

variables <- c("price") 

investigate_train <- investigate_train %>%
  group_by(address) %>%
  mutate(across(all_of(variables), ~mean(.x, na.rm = TRUE), .names = "mean_{.col}_address")) %>%
  ungroup() %>%
  group_by(subdistrict) %>%
  mutate(across(all_of(variables), ~mean(.x, na.rm = TRUE), .names = "mean_{.col}_sub")) %>%
  ungroup() %>%
  group_by(community) %>%
  mutate(across(all_of(variables), ~mean(.x, na.rm = TRUE), .names = "mean_{.col}_com")) %>%
  ungroup()

# Drop duplicates
investigate_train <- select(investigate_train, -variables)
investigate_train <- investigate_train %>% 
  distinct()

# Merge with test
merged_df <- merge(investigate_test, investigate_train, by.x=c("address", "subdistrict", "community"), by.y=c("address", "subdistrict", "community"), all.x=TRUE)

merged_df$diff_add <- ((merged_df$price - merged_df$mean_price_address)/merged_df$mean_price_address)*100
merged_df$diff_region <- ((merged_df$price - merged_df$mean_price_sub)/merged_df$mean_price_sub)*100
merged_df$diff_com <- ((merged_df$price - merged_df$mean_price_com)/merged_df$mean_price_com)*100
LS0tCnRpdGxlOiAiUHJvamVjdCA1LzEyIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCmBgYHtyfQpybShsaXN0ID0gbHMoKSkKYGBgCgojIEluc3RhbGwgcGFja2FnZXMKYGBge3J9CmxpYnJhcnkobW9tYmYpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZ2dzY2kpCmxpYnJhcnkoaGRtKQpsaWJyYXJ5KGdsbW5ldCkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShIRENJKQpsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeShwUk9DKQpsaWJyYXJ5KCJhZGFwdDRwdiIpCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KHN0cmluZ3IpCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKCiMgUHJlcAojIyBMb2FkIGRhdGEKYGBge3J9CiMgTG9hZCBkYXRhCkRJUiA8LSAnL1VzZXJzL2pvbm55Y29kZC9Eb3dubG9hZHMvJwoKcmF3X3RyYWluIDwtIHJlYWQuY3N2KGZpbGUucGF0aChESVIsICdyZWFsZXN0YXRlX3RyYWluLmNzdicpKQpyYXdfdGVzdCA8LSByZWFkLmNzdihmaWxlLnBhdGgoRElSLCAncmVhbGVzdGF0ZV90ZXN0LmNzdicpKQoKIyBEcm9wIFggCnJhd190cmFpbiRYIDwtIE5BCnJhd190ZXN0JFggPC0gTkEKCiMgQ29udmVydCBkYXRlIHRvIG51bWVyaWMKcmF3X3RyYWluJGRhdGUgPC0gYXMuRGF0ZShyYXdfdHJhaW4kZGF0ZV9hZGRlZCkKcmF3X3Rlc3QkZGF0ZSA8LSBhcy5EYXRlKHJhd190ZXN0JGRhdGVfYWRkZWQpCmBgYAoKYGBge3J9CiMgTWVyZ2UgaW5kaWNlcyAKcGNhX29mZmVyIDwtIHJlYWQuY3N2KGZpbGUucGF0aChESVIsICdwY2Ffb2ZmZXIuY3N2JykpCnBjYV9kZW1hbmQgPC0gcmVhZC5jc3YoZmlsZS5wYXRoKERJUiwgJ3BjYV9kZW1hbmQuY3N2JykpCgojIEV4dHJhY3QgeWVhciBhbmQgbW9udGggZnJvbSBkYXRlIGluIHJhd190cmFpbiBhbmQgcmF3X3Rlc3QKcmF3X3RyYWluJHllYXIgPC0gZm9ybWF0KHJhd190cmFpbiRkYXRlLCAiJVkiKQpyYXdfdHJhaW4kbW9udGggPC0gZm9ybWF0KHJhd190cmFpbiRkYXRlLCAiJW0iKQoKcmF3X3Rlc3QkeWVhciA8LSBmb3JtYXQocmF3X3Rlc3QkZGF0ZSwgIiVZIikKcmF3X3Rlc3QkbW9udGggPC0gZm9ybWF0KHJhd190ZXN0JGRhdGUsICIlbSIpCgojIEV4dHJhY3QgeWVhciBhbmQgbW9udGggZnJvbSBkYXRlIGluIHBjYV9vZmZlciBhbmQgcGNhX2RlbWFuZApwY2Ffb2ZmZXIkeWVhciA8LSBmb3JtYXQoYXMuRGF0ZShwY2Ffb2ZmZXIkZGF0ZSksICIlWSIpCnBjYV9vZmZlciRtb250aCA8LSBmb3JtYXQoYXMuRGF0ZShwY2Ffb2ZmZXIkZGF0ZSksICIlbSIpCgpwY2FfZGVtYW5kJHllYXIgPC0gZm9ybWF0KGFzLkRhdGUocGNhX2RlbWFuZCRkYXRlKSwgIiVZIikKcGNhX2RlbWFuZCRtb250aCA8LSBmb3JtYXQoYXMuRGF0ZShwY2FfZGVtYW5kJGRhdGUpLCAiJW0iKQoKIyBNZXJnZSByYXdfdHJhaW4gd2l0aCBwY2Ffb2ZmZXIgYW5kIHBjYV9kZW1hbmQKcmF3X3RyYWluIDwtIG1lcmdlKHJhd190cmFpbiwgcGNhX29mZmVyLCBieSA9IGMoInllYXIiLCAibW9udGgiKSwgYWxsID0gRkFMU0UpCnJhd190cmFpbiA8LSBtZXJnZShyYXdfdHJhaW4sIHBjYV9kZW1hbmQsIGJ5ID0gYygieWVhciIsICJtb250aCIpLCBhbGwgPSBGQUxTRSkKCiMgTWVyZ2UgcmF3X3Rlc3Qgd2l0aCBwY2Ffb2ZmZXIgYW5kIHBjYV9kZW1hbmQKcmF3X3Rlc3QgPC0gbWVyZ2UocmF3X3Rlc3QsIHBjYV9vZmZlciwgYnkgPSBjKCJ5ZWFyIiwgIm1vbnRoIiksIGFsbCA9IEZBTFNFKQpyYXdfdGVzdCA8LSBtZXJnZShyYXdfdGVzdCwgcGNhX2RlbWFuZCwgYnkgPSBjKCJ5ZWFyIiwgIm1vbnRoIiksIGFsbC54ID0gRkFMU0UpCmBgYAoKIyMgRGVmaW5lIG1vZGVsCmBgYHtyfQpuX2FkZHJlc3NlcyA8LSAxMApkdW1teV9hZGRyZXNzZXMgPC0gVApkdW1teV9zdWJkaXN0cmljdHMgPC0gVApkdW1teV9jb29yZGluYXRlcyA8LSBGCnNxdWFyZV9jb3JkaW5hdGVzIDwtIFQKcWN1dHMgPC0gMTAwCmRyb3BfcHJldl9wcmljZXMgPC0gVAoKbG9nX3ByaWNlIDwtIFQKYGBgCgpgYGB7cn0KIyBGaWx0ZXIgYWRkcmVzc2VzCmFkZHJlc3NfY291bnRzIDwtIHJhd190cmFpbiAlPiUgY291bnQoYWRkcmVzc19zaW1wbGUpCnNlbGVjdGVkX2FkZHJlc3NlcyA8LSBhZGRyZXNzX2NvdW50c1thZGRyZXNzX2NvdW50cyRuID4gbl9hZGRyZXNzZXMsIF0kYWRkcmVzc19zaW1wbGUKCmNhdCgnVHJhaW4gc2l6ZSBiZWZvcmUnLCBkaW0ocmF3X3RyYWluKSwgJzogYWZ0ZXInLCBkaW0ocmF3X3RyYWluW3Jhd190cmFpbiRhZGRyZXNzX3NpbXBsZSAlaW4lIHNlbGVjdGVkX2FkZHJlc3NlcywgXSkpCnJhd190cmFpbiA8LSByYXdfdHJhaW5bcmF3X3RyYWluJGFkZHJlc3Nfc2ltcGxlICVpbiUgc2VsZWN0ZWRfYWRkcmVzc2VzLCBdCgpjYXQoJ1RyYWluIHNpemUgYmVmb3JlJywgZGltKHJhd190ZXN0KSwgJzogYWZ0ZXInLCBkaW0ocmF3X3Rlc3RbcmF3X3Rlc3QkYWRkcmVzc19zaW1wbGUgJWluJSBzZWxlY3RlZF9hZGRyZXNzZXMsIF0pKQpyYXdfdGVzdCA8LSByYXdfdGVzdFtyYXdfdGVzdCRhZGRyZXNzX3NpbXBsZSAlaW4lIHNlbGVjdGVkX2FkZHJlc3NlcywgXQpgYGAKCiMjIEFkZHJlc3MgZHVtbWllcwoKYGBge3J9CmdlbmVyYXRlX2R1bW1pZXMgPC0gZnVuY3Rpb24odHJhaW4sIHRlc3QsIGNvbHVtbikgewogICMgQ29tYmluZSB0cmFpbiBhbmQgdGVzdAogIGNvbWJpbmVkX2RhdGEgPC0gcmJpbmQodHJhaW4sIHRlc3QpCiAgCiAgIyBDcmVhdGluZyBkdW1teSB2YXJpYWJsZXMgKGFzc3VtaW5nICdjYXRlZ29yeScgaXMgeW91ciBjYXRlZ29yaWNhbCBjb2x1bW4pCiAgY29tYmluZWRfZGF0YV9kdW1teSA8LSBtb2RlbC5tYXRyaXgofiBnZXQoY29sdW1uKSAtIDEsIGNvbWJpbmVkX2RhdGEpCiAgCiAgY29sX25hbWVzIDwtIHN0cmluZ3I6OnN0cl9yZXBsYWNlKGNvbG5hbWVzKGNvbWJpbmVkX2RhdGFfZHVtbXkpLCAiZ2V0XFwoY29sdW1uXFwpIiwgcGFzdGUwKGNvbHVtbiwgJ18nKSkKICAjcHJpbnQoY29sX25hbWVzKQogIGNvbG5hbWVzKGNvbWJpbmVkX2RhdGFfZHVtbXkpIDwtIGNvbF9uYW1lcwogIAogICMgU3BsaXR0aW5nIGJhY2sgaW50byB0cmFpbmluZyBhbmQgdGVzdGluZyBzZXRzCiAgdHJhaW5fcm93cyA8LSBucm93KHRyYWluKQogIHhfdHJhaW5fZHVtbXkgPC0gY29tYmluZWRfZGF0YV9kdW1teVsxOnRyYWluX3Jvd3MsIF0KICB4X3Rlc3RfZHVtbXkgPC0gY29tYmluZWRfZGF0YV9kdW1teVsodHJhaW5fcm93cyArIDEpOm5yb3coY29tYmluZWRfZGF0YV9kdW1teSksIF0KICAKICAjIEFkZCB0aGUgZHVtbXkgdmFyaWFibGVzIHRvIHRoZSBvcmlnaW5hbCBkYXRhZnJhbWVzCiAgdHJhaW4gPC0gY2JpbmQodHJhaW4sIHhfdHJhaW5fZHVtbXkpCiAgdGVzdCA8LSBjYmluZCh0ZXN0LCB4X3Rlc3RfZHVtbXkpCiAgCiAgcmV0dXJuKGxpc3QodHJhaW4gPSB0cmFpbiwgdGVzdCA9IHRlc3QpKQp9CgppZiAoZHVtbXlfYWRkcmVzc2VzKSB7CiAgcmVzdWx0IDwtIGdlbmVyYXRlX2R1bW1pZXMocmF3X3RyYWluLCByYXdfdGVzdCwgJ2FkZHJlc3Nfc2ltcGxlJykKICByYXdfdHJhaW4gPC0gcmVzdWx0JHRyYWluCiAgcmF3X3Rlc3QgPC0gcmVzdWx0JHRlc3QgIAp9CmBgYAoKIyMgU3ViZGlzdHJpY3QgZHVtbWllcyAKCmBgYHtyfQpvYnRhaW5fc3ViZGlzdHJpY3QgPC0gZnVuY3Rpb24oZGYpIHsKICBkZiRzdWJkaXN0cmljdCA8LSBzYXBwbHkoc3Ryc3BsaXQoZGYkYWRkcmVzc19zaW1wbGUsICIsXFxzKiIpLCBmdW5jdGlvbih4KSB4W1syXV0pCiAgZGZbZGYkc3ViZGlzdHJpY3QgPT0gJ0R1YmFpJywgJ3N1YmRpc3RyaWN0J10gPC0gc2FwcGx5KHN0cnNwbGl0KGRmW2RmJHN1YmRpc3RyaWN0ID09ICdEdWJhaScsICdhZGRyZXNzX3NpbXBsZSddLCAiLFxccyoiKSwgZnVuY3Rpb24oeCkgeFtbMV1dKSAgCiAgCiAgcmV0dXJuKGRmKQp9CgppZiAoZHVtbXlfc3ViZGlzdHJpY3RzKSB7CiAgcmF3X3RyYWluIDwtIG9idGFpbl9zdWJkaXN0cmljdChyYXdfdHJhaW4pCiAgcmF3X3Rlc3QgPC0gb2J0YWluX3N1YmRpc3RyaWN0KHJhd190ZXN0KQogIAogIHJlc3VsdCA8LSBnZW5lcmF0ZV9kdW1taWVzKHJhd190cmFpbiwgcmF3X3Rlc3QsICdzdWJkaXN0cmljdCcpCiAgcmF3X3RyYWluIDwtIHJlc3VsdCR0cmFpbgogIHJhd190ZXN0IDwtIHJlc3VsdCR0ZXN0ICAKfQpgYGAKCiMjIENvb3JkaW5hdGVzIGR1bW1pZXMKYGBge3J9CmRvX3F1YW50aWxlcyA8LSBmdW5jdGlvbihkYXRhLCBxdWFudGlsZXMsIHByZWZpeCkgewogICAgY3V0cyA8LSBjdXQoZGF0YSwgcXVhbnRpbGVzLCBpbmNsdWRlLmxvd2VzdCA9IFQpCiAgICBjdXRzIDwtIHBhc3RlMChwcmVmaXgsIGN1dHMpCiAgICByZXR1cm4oY3V0cykKfQogIApjb21iaW5lZF9kYXRhIDwtIHJiaW5kKHJhd190cmFpbiwgcmF3X3Rlc3QpCgojIEZ1bmN0aW9uIHRvIGFzc2lnbiBzdWJyZWdpb25zCmFzc2lnbl9zdWJyZWdpb24gPC0gZnVuY3Rpb24oZGF0YSwgbGF0X2JyZWFrcywgbG9uZ19icmVha3MpIHsKICBkYXRhJHN1YnJlZ2lvbiA8LSB3aXRoKGRhdGEsIHBhc3RlKAogICAgY3V0KGxhdCwgYnJlYWtzID0gbGF0X2JyZWFrcywgbGFiZWxzID0gRkFMU0UsIGluY2x1ZGUubG93ZXN0ID0gVFJVRSksCiAgICBjdXQobG9uLCBicmVha3MgPSBsb25nX2JyZWFrcywgbGFiZWxzID0gRkFMU0UsIGluY2x1ZGUubG93ZXN0ID0gVFJVRSksCiAgICBzZXAgPSAiXyIKICApKQogIHJldHVybihkYXRhKQp9CgppZiAoc3F1YXJlX2NvcmRpbmF0ZXMpewogIAogICMgTGF0CiAgbGF0X3F1YW50aWxlcyA8LSB1bmlxdWUocXVhbnRpbGUoY29tYmluZWRfZGF0YSRsYXQsIDA6cWN1dHMvcWN1dHMpKQogICNjb21iaW5lZF9kYXRhJGxhdF9jdXRzIDwtIGRvX3F1YW50aWxlcyhjb21iaW5lZF9kYXRhJGxhdCwgcXVhbnRpbGVzLCAnbGF0XycpCgogICMgTG9uCiAgbG9uX3F1YW50aWxlcyA8LSB1bmlxdWUocXVhbnRpbGUoY29tYmluZWRfZGF0YSRsb24sIDA6cWN1dHMvcWN1dHMpKQogICNjb21iaW5lZF9kYXRhJGxvbl9jdXRzIDwtIGRvX3F1YW50aWxlcyhjb21iaW5lZF9kYXRhJGxvbiwgcXVhbnRpbGVzLCAnbG9uXycpCiAgCiAgIyBBc3NpZ24gc3VicmVnaW9ucyB0byBib3RoIGRhdGFzZXRzCiAgcmF3X3RyYWluIDwtIGFzc2lnbl9zdWJyZWdpb24ocmF3X3RyYWluLCBsYXRfcXVhbnRpbGVzLCBsb25fcXVhbnRpbGVzKQogIHJhd190ZXN0IDwtIGFzc2lnbl9zdWJyZWdpb24ocmF3X3Rlc3QsIGxhdF9xdWFudGlsZXMsIGxvbl9xdWFudGlsZXMpCgogIHJlc3VsdCA8LSBnZW5lcmF0ZV9kdW1taWVzKHJhd190cmFpbiwgcmF3X3Rlc3QsICdzdWJyZWdpb24nKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCiAgICAKfQoKaWYgKGR1bW15X2Nvb3JkaW5hdGVzKSB7CiAgIyBMYXQKICBxdWFudGlsZXMgPC0gdW5pcXVlKHF1YW50aWxlKGNvbWJpbmVkX2RhdGEkbGF0LCAwOnFjdXRzL3FjdXRzKSkKICByYXdfdHJhaW4kbGF0X2N1dHMgPC0gZG9fcXVhbnRpbGVzKHJhd190cmFpbiRsYXQsIHF1YW50aWxlcywgJ2xhdF8nKQogIHJhd190ZXN0JGxhdF9jdXRzIDwtIGRvX3F1YW50aWxlcyhyYXdfdGVzdCRsYXQsIHF1YW50aWxlcywgJ2xhdF8nKQogICAgCiAgIyBMb24KICBxdWFudGlsZXMgPC0gdW5pcXVlKHF1YW50aWxlKGNvbWJpbmVkX2RhdGEkbG9uLCAwOnFjdXRzL3FjdXRzKSkKICByYXdfdHJhaW4kbG9uX2N1dHMgPC0gZG9fcXVhbnRpbGVzKHJhd190cmFpbiRsb24sIHF1YW50aWxlcywgJ2xvbl8nKQogIHJhd190ZXN0JGxvbl9jdXRzIDwtIGRvX3F1YW50aWxlcyhyYXdfdGVzdCRsb24sIHF1YW50aWxlcywgJ2xvbl8nKQoKCiAgIyBMYXQKICByZXN1bHQgPC0gZ2VuZXJhdGVfZHVtbWllcyhyYXdfdHJhaW4sIHJhd190ZXN0LCAnbGF0X2N1dHMnKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCiAgCiAgIyBMb24KICByZXN1bHQgPC0gZ2VuZXJhdGVfZHVtbWllcyhyYXdfdHJhaW4sIHJhd190ZXN0LCAnbG9uX2N1dHMnKQogIHJhd190cmFpbiA8LSByZXN1bHQkdHJhaW4KICByYXdfdGVzdCA8LSByZXN1bHQkdGVzdCAgCn0KYGBgCgojIyBDbGVhbmluZwpgYGB7cn0KdGVzdCA8LSByYXdfdGVzdCAKdHJhaW4gPC1yYXdfdHJhaW4KCiMgS2VlcCBudW1lcmljIGNvbHVtbnMKbnVtZXJpYyA8LSBzYXBwbHkodHJhaW4sIGlzLm51bWVyaWMpCm51bWVyaWNfdGVzdCA8LSBzYXBwbHkodHJhaW4sIGlzLm51bWVyaWMpCgp0cmFpbiA8LSB0cmFpblssIG51bWVyaWNdCnRlc3QgPC0gdGVzdFssIG51bWVyaWNdCgojIFJlbW92ZSBjb2x1bW5zIHdpdGggMCB2YXJpYW5jZSAKdGVzdD0gdGVzdFssYXBwbHkodGVzdCwgMiwgdmFyKSA+IDBdICNyZW1vdmUgY29sdW1ucyB3aXRoIDAgdmFyaWFuY2UKdHJhaW49IHRyYWluWyxhcHBseSh0cmFpbiwgMiwgdmFyKSA+IDBdICNyZW1vdmUgY29sdW1ucyB3aXRoIDAgdmFyaWFuY2UKCmNhdChkaW0odHJhaW4pLCBkaW0odGVzdCkpCgojIFRvIGhhdmUgc2FtZSBjb2x1bW5zIGluIHRyYWluIGFuZCB0ZXN0CnRyYWluIDwtIHRyYWluWywgaW50ZXJzZWN0KG5hbWVzKHRyYWluKSwgbmFtZXModGVzdCkpXQp0ZXN0IDwtIHRlc3RbLCBpbnRlcnNlY3QobmFtZXModHJhaW4pLCBuYW1lcyh0ZXN0KSldCgpjYXQoZGltKHRyYWluKSwgZGltKHRlc3QpKQpgYGAKCiMjIENyZWF0ZSBhZGRpdGlvbmFsIHZhcmlhYmxlcwojIyMgSW50ZXJhY3Rpb24gdGVybXMKYGBge3J9CiMgRGVmaW5lIGNyZWF0ZSBpbnRlcmFjdGlvbnMgdGVybXMgZnVuY3Rpb24KY3JlYXRlX2ludGVyYWN0aW9uX3Rlcm1zIDwtIGZ1bmN0aW9uKGRhdGEsIHZhcmlhYmxlcykgewogICAgIyBJZGVudGlmeSBjb2x1bW5zIHRoYXQgc3RhcnQgd2l0aCAiY29tbXVuaXR5XyIKICAgIHN1YmRpc3RyaWN0X2NvbHMgPC0gZ3JlcCgiXmNvbW11bml0eV8iLCBuYW1lcyhkYXRhKSwgdmFsdWUgPSBUUlVFKQoKICAgICMgTG9vcCBvdmVyIHRoZXNlIGNvbHVtbnMgYW5kIGNyZWF0ZSBpbnRlcmFjdGlvbiB0ZXJtcwogICAgZm9yKGNvbCBpbiBzdWJkaXN0cmljdF9jb2xzKSB7CiAgICAgICAgZm9yKHZhciBpbiB2YXJpYWJsZXMpIHsKICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdmFyaWFibGUgZXhpc3RzIGluIHRoZSBkYXRhCiAgICAgICAgICAgIGlmKHZhciAlaW4lIG5hbWVzKGRhdGEpKSB7CiAgICAgICAgICAgICAgICAjIENyZWF0ZSBpbnRlcmFjdGlvbiB0ZXJtIGFuZCBhZGQgaXQgdG8gdGhlIGRhdGEKICAgICAgICAgICAgICAgIGRhdGFbcGFzdGUwKGNvbCwgIl8iLCB2YXIpXSA8LSBkYXRhWywgY29sXSAqIGRhdGFbLCB2YXJdCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKHBhc3RlKCJWYXJpYWJsZSIsIHZhciwgIm5vdCBmb3VuZCBpbiBkYXRhZnJhbWUuIFNraXBwaW5nLiIpKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgIyBSZXR1cm4gdGhlIG1vZGlmaWVkIGRhdGFmcmFtZQogICAgcmV0dXJuKGRhdGEpCn0KCiMgRGVmaW5lIHRoZSBsaXN0IG9mIHZhcmlhYmxlcyBmb3IgaW50ZXJhY3Rpb24KdmFyaWFibGVzX3RvX2ludGVyYWN0IDwtIGMoImJlZHMiLCAiYXJlYSIsICJiYXRocyIsICJiYWxjb255IiwgInBhcmtpbmciLCAic3dpbW1pbmdfcG9vbCIsICJmdXJuaXNoZWQiKQoKIyBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHlvdXIgZGF0YWZyYW1lIGFuZCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMKdHJhaW4gPC0gY3JlYXRlX2ludGVyYWN0aW9uX3Rlcm1zKHRyYWluLCB2YXJpYWJsZXNfdG9faW50ZXJhY3QpCnRlc3QgPC0gY3JlYXRlX2ludGVyYWN0aW9uX3Rlcm1zKHRlc3QsIHZhcmlhYmxlc190b19pbnRlcmFjdCkKYGBgCgojIyMgU3F1YXJlZCB2YXJzCmBgYHtyfQp0cmFpbiRhcmVhX3NxIDwtIHRyYWluJGFyZWFeMgp0ZXN0JGFyZWFfc3EgPC0gdGVzdCRhcmVhXjIKCnRyYWluJGJlZF9zcSA8LSB0cmFpbiRiZWReMgp0ZXN0JGJlZF9zcSA8LSB0ZXN0JGJlZF4yCgp0cmFpbiRiYXRoc19zcSA8LSB0cmFpbiRiYXRoc14yCnRlc3QkYmF0aHNfc3EgPC0gdGVzdCRiYXRoc14yCmBgYAoKCiMjIFJlbW92ZSBoaWdobHkgY29ycmVsYXRlZCB2YXJpYWJsZXMKYGBge3J9CiMgQ2hlY2sgZm9yIGNvcnJlbGF0aW9uCmNvcnJlbGF0aW9uX21hdHJpeCA8LSBjb3IodHJhaW4pCmhpZ2hfY29ycmVsYXRpb24gPC0gd2hpY2goYWJzKGNvcnJlbGF0aW9uX21hdHJpeCkgPiAwLjk5LCBhcnIuaW5kID0gVFJVRSkKCiMgUmV0dXJuIHdoaWNoIHZhcmlhYmxlcyBhcmUgZ2V0dGluZyByZW1vdmV4CmhpZ2hfY29ycmVsYXRpb24gPC0gaGlnaF9jb3JyZWxhdGlvbltoaWdoX2NvcnJlbGF0aW9uWywgMV0gPCBoaWdoX2NvcnJlbGF0aW9uWywgMl0sIF0KcGFpcnNfdG9fcmVtb3ZlIDwtIGFwcGx5KGhpZ2hfY29ycmVsYXRpb24sIDEsIGZ1bmN0aW9uKGluZGV4KSB7CiAgcGFpciA8LSBjb2xuYW1lcyh0cmFpbilbaW5kZXhdCiAgI2NhdCgiSGlnaCBjb3JyZWxhdGlvbiBiZXR3ZWVuOiIsIHBhaXJbMV0sICJhbmQiLCBwYWlyWzJdLCAiXG4iKQogICNjYXQoIlJlbW92aW5nOiIsIHBhaXJbMl0sICJcblxuIikKICByZXR1cm4ocGFpclsyXSkKfSkKCiMgUmVtb3ZlCnRlc3QgPC0gdGVzdFssICFjb2xuYW1lcyh0ZXN0KSAlaW4lIHBhaXJzX3RvX3JlbW92ZV0KdHJhaW4gPC0gdHJhaW5bLCAhY29sbmFtZXModHJhaW4pICVpbiUgcGFpcnNfdG9fcmVtb3ZlXQpgYGAKCgojIyBQcmVwYXJlIGRhdGFmcmFtZXMKYGBge3J9CiMgU3BsaXQgaW50byBYIGFuZCBZIGZvciBzY2FsaW5nCnhfdHJhaW4gPC0gc2VsZWN0KHRyYWluLCAtcHJpY2UpCgpudW1fc2NhbGUgPC0gMSAjIHRvIG1ha2Ugd2VpZ2h0cyBtb3JlIGludGVycHJldGFibGUKCnlfdHJhaW5fb3JpZyA8LSB0cmFpbiRwcmljZS9udW1fc2NhbGUKaWYgKGxvZ19wcmljZSkgewogIHlfdHJhaW4gPC0gbG9nKHRyYWluJHByaWNlL251bV9zY2FsZSkKfSBlbHNlewogIHlfdHJhaW4gPC0gdHJhaW4kcHJpY2UvbnVtX3NjYWxlCn0KCnhfdGVzdCA8LSBzZWxlY3QodGVzdCwgLXByaWNlKQp5X3Rlc3Rfb3JpZyA8LSB0ZXN0JHByaWNlL251bV9zY2FsZQppZiAobG9nX3ByaWNlKSB7CiAgeV90ZXN0IDwtIGxvZyh0ZXN0JHByaWNlL251bV9zY2FsZSkKfSBlbHNlewogIHlfdGVzdCA8LSB0ZXN0JHByaWNlL251bV9zY2FsZQp9CgojIFNhdmUgdW5zY2FsZWQKeF90cmFpbl91bnNjYWxlZCA8LSB4X3RyYWluCnhfdGVzdF91bnNjYWxlZCA8LSB4X3Rlc3QKCiMgU2NhbGUgCnhfdHJhaW4gPC0gc2NhbGUoeF90cmFpbikKeF90ZXN0IDwtIHNjYWxlKHhfdGVzdCkKCiMgQ3JlYXRlIGRmcwp5X3RyYWluX2RmIDwtIGRhdGEuZnJhbWUoeV90cmFpbikKeF90cmFpbl9kZiA8LSBkYXRhLmZyYW1lKHhfdHJhaW4pCmNvbG5hbWVzKHlfdHJhaW5fZGYpPC0ncHJpY2UnCgp5X3Rlc3RfZGYgPC0gZGF0YS5mcmFtZSh5X3Rlc3QpCnhfdGVzdF9kZiA8LSBkYXRhLmZyYW1lKHhfdGVzdCkKY29sbmFtZXMoeV90ZXN0X2RmKTwtJ3ByaWNlJwoKIyBEcm9wIHNhbWUgcHJpY2UgdmFyaWFibGVzCmlmIChkcm9wX3ByZXZfcHJpY2VzKSB7CiAgIyBzYXZlIGRhdGEgZnJhbWUgd2l0aCBwcmljZSB2YXJzCiAgeF90ZXN0X2RmX3dpdGhfcHJpY2V2YXJzIDwtIHhfdGVzdF9kZgogIHhfdHJhaW5fZGZfd2l0aF9wcmljZXZhcnMgPC0geF90cmFpbl9kZgogIAogICMgRHJvcCBmcm9tIG1haW4gZGZzCiAgeF90ZXN0X2RmIDwtIHhfdGVzdF9kZiAlPiUgc2VsZWN0KC1jb250YWlucygic2FtZSIpKQogIHhfdHJhaW5fZGYgPC0geF90cmFpbl9kZiAlPiUgc2VsZWN0KC1jb250YWlucygic2FtZSIpKQp9Cgp0cmFpbl9kZjwtY2JpbmQoeF90cmFpbl9kZix5X3RyYWluX2RmKQp0ZXN0X2RmPC1jYmluZCh4X3Rlc3RfZGYseV90ZXN0X2RmKQpgYGAKCiMjIERlZmluZSByZWdyZXNzaW9uIG1ldHJpY3MKYGBge3J9CiMgUmVncmVzc2lvbiBtZXRyaWNzCnJtc2UgPC0gZnVuY3Rpb24ob2JzZXJ2ZWQsIHByZWRpY3RlZCkgewogIHNxcnQobWVhbigob2JzZXJ2ZWQgLSBwcmVkaWN0ZWQpIF4gMikpCn0KCmxvZ19ybXNlIDwtIGZ1bmN0aW9uKG9ic2VydmVkLCBwcmVkaWN0ZWQpIHsKICBzcXJ0KG1lYW4oKGxvZyhvYnNlcnZlZCkgLSBsb2cocHJlZGljdGVkKSkgXiAyKSkKfQoKbWFwZSA8LSBmdW5jdGlvbihvYnNlcnZlZCwgcHJlZGljdGVkKSB7CiAgbWVhbihhYnMoKHByZWRpY3RlZCAtIG9ic2VydmVkKSAvIG9ic2VydmVkKSkgKiAxMDAKfQoKbWFlIDwtIGZ1bmN0aW9uKG9ic2VydmVkLCBwcmVkaWN0ZWQpIHsKICBtZWFuKGFicyhvYnNlcnZlZCAtIHByZWRpY3RlZCkpCn0KCiMgTWV0cmljcyBDVgpyZWdyZXNzaW9uX21ldHJpY3MgPC0gZnVuY3Rpb24obW9kZWwsIGRhdGEsIHlfcmVhbCwgbnVtX3NjYWxlLCB5X3dvdXRfbG9nKSB7CiAKICBwcmVkIDwtIHByZWRpY3QobW9kZWwsIG5ld3ggPSBhcy5tYXRyaXgoZGF0YSksIHMgPSBmaXQubGFzc28kbGFtYmRhLm1pbiwgdHlwZSA9ICJyZXNwb25zZSIpCiAgCiAgaWYgKGxvZ19wcmljZSkgewogICAgICBwcmVkIDwtIGV4cChwcmVkKQogICAgICB5X3JlYWwgPC0geV93b3V0X2xvZwogIH0KICBybXNlX3ZhbHVlIDwtIHJtc2UoeV9yZWFsLCBwcmVkKSpudW1fc2NhbGUKICBtYXBlIDwtIG1hcGUoeV9yZWFsLCBwcmVkKQogIG1hZSA8LSBtYWUoeV9yZWFsLCBwcmVkKSpudW1fc2NhbGUKICBjYXQoJ1xuUk1TRTonLCBybXNlX3ZhbHVlLCAnTUFQRTonLCBtYXBlLCAnTUFFOicsIG1hZSkgCiAgCiAgcmV0dXJuKGxpc3Qocm1zZT1ybXNlX3ZhbHVlLCBtYXBlPW1hcGUsIG1hZT1tYWUpKQp9CgpgYGAKCgojIFN1bW1hcml6ZSBkYXRhIAoKYGBge3J9CiMgQ2FsY3VsYXRlIHN0YXRpc3RpY3MgZm9yIHlfdHJhaW4Kbl9vYnNfdHJhaW4gPC0gbGVuZ3RoKHlfdHJhaW4pCm1lYW5fdHJhaW4gPC0gbWVhbihleHAoeV90cmFpbikpCnF1YXJ0aWxlc190cmFpbiA8LSBxdWFudGlsZShhcy5tYXRyaXgoZXhwKHlfdHJhaW4pKSwgcHJvYnMgPSBjKDAuMjUsIDAuNSwgMC43NSkpCgojIENhbGN1bGF0ZSBzdGF0aXN0aWNzIGZvciB5X3Rlc3QKbl9vYnNfdGVzdCA8LSBsZW5ndGgoeV90ZXN0KQptZWFuX3Rlc3QgPC0gbWVhbih5X3Rlc3QpCnF1YXJ0aWxlc190ZXN0IDwtIHF1YW50aWxlKGFzLm1hdHJpeCh5X3Rlc3QpLCBwcm9icyA9IGMoMC4yNSwgMC41LCAwLjc1KSkKCiMgQ3JlYXRlIHRoZSBkYXRhIGZyYW1lIHdpdGggdGhlIHN0YXRpc3RpY3MKc3RhdHNfdGFibGUgPC0gZGF0YS5mcmFtZSgKICBEYXRhc2V0ID0gYygieV90cmFpbiIsICJ5X3Rlc3QiKSwKICBPYnNlcnZhdGlvbnMgPSBjKG5fb2JzX3RyYWluLCBuX29ic190ZXN0KSwKICBNZWFuID0gYyhtZWFuX3RyYWluLCBtZWFuX3Rlc3QpLAogIGAxc3QgUXVhcnRpbGVgID0gYyhxdWFydGlsZXNfdHJhaW5bMV0sIHF1YXJ0aWxlc190ZXN0WzFdKSwKICBNZWRpYW4gPSBjKHF1YXJ0aWxlc190cmFpblsyXSwgcXVhcnRpbGVzX3Rlc3RbMl0pLAogIGAzcmQgUXVhcnRpbGVgID0gYyhxdWFydGlsZXNfdHJhaW5bM10sIHF1YXJ0aWxlc190ZXN0WzNdKQopCgpzdGF0c190YWJsZV9sb25nIDwtIHN0YXRzX3RhYmxlICU+JSAKICBwaXZvdF9sb25nZXIoY29scyA9IC1EYXRhc2V0LCBuYW1lc190byA9ICJNZXRyaWMiLCB2YWx1ZXNfdG8gPSAiVmFsdWUiKQoKIyBTcHJlYWQgdGhlIGxvbmcgZm9ybWF0IHRhYmxlIHRvIHdpZGUgZm9ybWF0IHdpdGggb25lIGNvbHVtbiBmb3IgeV90cmFpbiBhbmQgb25lIGZvciB5X3Rlc3QKc3RhdHNfdGFibGVfd2lkZSA8LSBzdGF0c190YWJsZV9sb25nICU+JSAKICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gRGF0YXNldCwgdmFsdWVzX2Zyb20gPSBWYWx1ZSkKYGBgCgojIExBU1NPIAoKYGBge3J9CnhfdGVzdF9kZltpcy5uYSh4X3Rlc3RfZGYpXSA8LSAwCnhfdHJhaW5fZGZbaXMubmEoeF90cmFpbl9kZildIDwtIDAKCmNhdChkaW0oeF90cmFpbl9kZikpCmBgYAoKCiMjIExBU1NPIEJJQyAKCiMjIERlZmluZSBtb2RlbApgYGB7cn0KbGFzc28uYmljIDwtIGZ1bmN0aW9uKHkseCxleHRlbmRlZD1GQUxTRSkgewogICNTZWxlY3QgbW9kZWwgaW4gTEFTU08gcGF0aCB3aXRoIGJlc3QgQklDICh1c2luZyBMQVNTTyByZWdyZXNzaW9uIGVzdGltYXRlcykKICAjSW5wdXQKICAjIC0geTogdmVjdG9yIHdpdGggcmVzcG9uc2UgdmFyaWFibGUKICAjIC0geDogZGVzaWduIG1hdHJpeAogICMKICAjT3V0cHV0OiBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBlbGVtZW50cwogICMgLSBjb2VmOiBMQVNTTy1lc3RpbWF0ZWQgcmVncmVzc2lvbiBjb2VmZmljaWVudCB3aXRoIGxhbWJkYSBzZXQgdmlhIEJJQwogICMgLSB5cHJlZDogcHJlZGljdGVkIHkKICAjIC0gbGFtYmRhLm9wdDogb3B0aW1hbCB2YWx1ZSBvZiBsYW1iZGEKICAjIC0gbGFtYmRhOiBkYXRhLmZyYW1lIHdpdGggYmljIGFuZCBudW1iZXIgb2Ygc2VsZWN0ZWQgdmFyaWFibGVzIGZvciBlYWNoIHZhbHVlIG9mIGxhbWJkYQogIHJlcXVpcmUoZ2xtbmV0KQogIGZpdCA8LSBnbG1uZXQoeD14LHk9eSxmYW1pbHk9J2dhdXNzaWFuJyxhbHBoYT0xKQogIHByZWQgPC0gY2JpbmQoMSx4KSAlKiUgcmJpbmQoZml0JGEwLGZpdCRiZXRhKQogIG4gPC0gbGVuZ3RoKHkpCiAgcCA8LSBjb2xTdW1zKGZpdCRiZXRhIT0wKSArIDEKICBpZiAoIWV4dGVuZGVkKXsKICAgIGJpYyA8LSBuICogbG9nKGNvbFN1bXMoKHktcHJlZCleMikvbGVuZ3RoKHkpKSArIG4qKGxvZygyKnBpKSsxKSArIGxvZyhuKSpwIAogIH0gZWxzZSB7CiAgICBiaWMgPC0gbiAqIGxvZyhjb2xTdW1zKCh5LXByZWQpXjIpL2xlbmd0aCh5KSkgKyBuKihsb2coMipwaSkrMSkgKyBsb2cobikqcCArIDIqbG9nKGNob29zZShuY29sKHgpLHApKQogIH0KICBzZWwgPC0gd2hpY2gubWluKGJpYykKICBiZXRhIDwtIGMoZml0JGEwW3NlbF0sZml0JGJldGFbLHNlbF0pOyBuYW1lcyhiZXRhKVsxXT0gJ0ludGVyY2VwdCcKICB5cHJlZCA8LSBwcmVkWyxzZWxdCiAgYW5zIDwtIGxpc3QoY29lZj1iZXRhLHlwcmVkPXlwcmVkLGxhbWJkYS5vcHQ9Zml0JGxhbWJkYVtzZWxdLGxhbWJkYT1kYXRhLmZyYW1lKGxhbWJkYT1maXQkbGFtYmRhLGJpYz1iaWMsbnZhcnM9cCkpCiAgcmV0dXJuKGFucykKfQpgYGAKCiMjIEZpdCBtb2RlbApgYGB7cn0KIyBGaXQgbW9kZWwKZml0Lmxhc3NvX2ViaWMgPSBsYXNzby5iaWMoeD1hcy5tYXRyaXgoeF90cmFpbl9kZiksIHk9eV90cmFpbiAsZXh0ZW5kZWQgPSBUUlVFKQpmaXQubGFzc29fZWJpYwpgYGAKCgpgYGB7cn0KIyBMYW1iZGEKZml0Lmxhc3NvX2ViaWMkbGFtYmRhLm9wdAoKYGBgCgojIyMgT3VwdXQgY29lZmZpY2llbnRzIApgYGB7cn0KIyBFeHRyYWN0IGNvZWZmaWNpZW50cwpjb2VmX2xhc3NvX2ViaWMgPC0gZml0Lmxhc3NvX2ViaWMkY29lZgpjb2VmX21hdHJpeF9lYmljIDwtIGFzLm1hdHJpeChjb2VmX2xhc3NvX2ViaWMpCgojIE91dHB1dCBub24gemVybyBjb2VmZmljaWVudHMKbm9uX3plcm8gPC0gY29lZl9tYXRyaXhfZWJpYyAhPTAKY29lZl90YWJsZV9lYmljIDwtIGRhdGEuZnJhbWUoVmFyaWFibGUgPSByb3duYW1lcyhjb2VmX21hdHJpeF9lYmljKVtub25femVyb10sIENvZWZmaWNpZW50cyA9IGNvZWZfbWF0cml4X2ViaWNbbm9uX3plcm9dKQpjb2VmX3RhYmxlX2ViaWMgPC0gY29lZl90YWJsZV9lYmljW29yZGVyKC1hYnMoY29lZl90YWJsZV9lYmljJENvZWZmaWNpZW50cykpLF0KY29lZl90YWJsZV9lYmljJENvZWZmaWNpZW50cyA8LSByb3VuZChjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzLCBkaWdpdHMgPSA0KQpjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzIDwtIGZvcm1hdChjb2VmX3RhYmxlX2ViaWMkQ29lZmZpY2llbnRzLCBzY2llbnRpZmljID0gRkFMU0UpCmBgYAoKCiMjIyBPdXB1dCBjb2xsYXBzZWQgY29lZmZzIAoKYGBge3J9CiMgR3JvdXAgcHJlZml4ZXMgZm9yIHJlZ3Jlc3Npb24gb3V0cHV0CmNvZWZfdGFibGVfZWJpY19vdXRwdXQgPC0gY29lZl90YWJsZV9lYmljICU+JQogIG11dGF0ZShwcmVmaXggPSBjYXNlX3doZW4oCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYWRkcmVzc19zaW1wbGVfIikgfiAiQWRkcmVzcyBpbmRpY2F0b3JzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJBRURfIikgfiAiQUVEIGV4Y2hhbmdlIHJhdGVzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJjb21tXyIpIH4gIkNvbW0gdmFyaWFibGVzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJjb21tdW5pdHlfIikgfiAiQ29tbXVuaXR5IGluZGljYXRvcnMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImVtaXJhdGVfIikgfiAiRW1pcmF0ZSB2YXJpYWJsZXMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImFyZWFfc3EiKSB+ICJBcmVhIHNxdWFyZWQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImFyZWEiKSB+ICJBcmVhIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJiYWxjb255IikgfiAiIyBCYWxjb255cyIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYmF0aHNfc3EiKSB+ICIjIEJhbGNvbnlzIHNxdWFyZWQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImJlZF9zcSIpIH4gIiMgQmVkcyBzcXVhcmVkIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJiZWQiKSB+ICIjIEJlZHMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImZ1cm5pc2hlZCIpIH4gIiMgRnVybmlzaGVkIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiZ29sZCIpIH4gIkdvbGQgcHJpY2UiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIm1ldHJvIikgfiAiRGlzdGFuY2UgdG8gbWV0cm8iLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInBhcmtpbmciKSB+ICJQYXJraW5nIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAibG9uIikgfiAiTG9uZ2l0dWRlIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJnZHAiKSB+ICJHRFAiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImhvc3BpdGFsIikgfiAiRGlzdGFuY2UgdG8gaG9zcGl0YWwiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInN1YnJlZ2lvbiIpIH4gIlJlZ2lvbiBpbmRpY2F0b3JzIChieSBnZW9ncmFwaGljIGNvb3JkaW5hdGVzKSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAibWFya2V0IikgfiAiRGlzdGFuY2UgdG8gZ3JvY2VyeSBzdG9yZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAicGFya2luZyIpIH4gIlBhcmtpbmcgaW5kaWNhdG9yIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJzdWJkaXN0cmljdCIpIH4gIlN1YmRpc3RyaWN0IGluZGljYXRvcnMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInN3aW1taW5nX3Bvb2wiKSB+ICJTd2ltbWluZyBwb29sIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiVVNEX0JUQyIpIH4gIlVTQy1jcnlwdG8gZXhjaGFuZ2UgcmF0ZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiVVNEX0VUSCIpIH4gIlVTQy1jcnlwdG8gZXhjaGFuZ2UgcmF0ZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiUEMxX2RlbWFuZCIpIH4gIlBDQSAxIGRlbWFuZCIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiUEMyX2RlbWFuZCIpIH4gIlBDQSAyIGRlbWFuZCIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiUEMyX2RlbWFuZCIpIH4gIlBDQSAzIGRlbWFuZCIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiUEMxX29mZmVyIikgfiAiUENBIDEgb2ZmZXIiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlBDMl9vZmZlciIpIH4gIlBDQSAyIG9mZmVyIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJQQzNfb2ZmZXIiKSB+ICJQQ0EgMyBvZmZlciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiKEludGVyY2VwdCkiKSB+ICIoSW50ZXJjZXB0KSIsCiAgICBUUlVFIH4gIk1pc2MiICMgRm9yIGFsbCBvdGhlciBjYXNlcwogICkpCgpgYGAKCgpgYGB7cn0KIyBDb2xsYXBzZSB0aGUgZGF0YWZyYW1lIHRvIG9ubHkga2VlcCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWFjaCBwcmVmaXgKIyBhbmQgY291bnQgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgb2YgZWFjaCB0eXBlCmNvZWZfdGFibGVfZWJpY19vdXRwdXQkQ29lZmZpY2llbnRzIDwtIGFzLm51bWVyaWMoY29lZl90YWJsZV9lYmljX291dHB1dCRDb2VmZmljaWVudHMpCmNvbGxhcHNlZF9jb2VmX21hdHJpeF9lYmljIDwtIGNvZWZfdGFibGVfZWJpY19vdXRwdXQgJT4lCiAgZ3JvdXBfYnkocHJlZml4KSAlPiUKICBzdW1tYXJpc2UoTWVhbiA9IG1lYW4oMTAwKkNvZWZmaWNpZW50cyksCiAgICAgICAgICAgIE1pbiA9IG1pbigxMDAqQ29lZmZpY2llbnRzKSwKICAgICAgICAgICAgTWF4ID0gbWF4KDEwMCpDb2VmZmljaWVudHMpLAogICAgICAgICAgICBDb3VudCA9IG4oKSkgJT4lCiAgbXV0YXRlKE1lYW4gPSByb3VuZChNZWFuLCAyKSwKICAgICAgICAgTWluID0gcm91bmQoTWluLCAyKSwKICAgICAgICAgTWF4ID0gcm91bmQoTWF4LCAyKSkgJT4lCiAgYXJyYW5nZShkZXNjKENvdW50KSkgICMgU29ydGluZyBieSBNYXggaW4gZGVzY2VuZGluZyBvcmRlcgpgYGAKCgojIyBMQVNTTyBDVgoKIyMgRml0IG1vZGVsCmBgYHtyfQojIEZpdCBtb2RlbApmaXQubGFzc28gPSBjdi5nbG1uZXQoeD1hcy5tYXRyaXgoeF90cmFpbl9kZiksIHk9eV90cmFpbiwgbmZvbGRzPTEwKQpmaXQubGFzc28KYGBgCgpgYGB7cn0KZml0Lmxhc3NvJGxhbWJkYS5taW4KYGBgCgojIyNUZXN0IG91dCBvZiBzYW1wbGUKCmBgYHtyfQojIFRFU1Q6IFJNU0U6IDMzMDc3MS4zIE1BUEU6IDE0LjE0NTM3IE1BRTogMTg2NTk4LgpxIDwtIHJlZ3Jlc3Npb25fbWV0cmljcyhmaXQubGFzc28sIHhfdGVzdF9kZiwgeV90ZXN0LCBudW1fc2NhbGUsIHlfdGVzdF9vcmlnKQoKIyBUUkFJTjogUk1TRTogMjIyODc0LjggTUFQRTogMTAuMzc3NTYgTUFFOiAxNDI0MTguMwpxIDwtIHJlZ3Jlc3Npb25fbWV0cmljcyhmaXQubGFzc28sIHhfdHJhaW5fZGYsIHlfdHJhaW4sIG51bV9zY2FsZSwgeV90cmFpbl9vcmlnKQpgYGAKCiMjIyBPdXB1dCBjb2VmZmljaWVudHMgCmBgYHtyfQojIEV4dHJhY3QgY29lZmZpY2llbnRzCmNvZWZfbGFzc28gPC0gcHJlZGljdChmaXQubGFzc28sIHR5cGUgPSAiY29lZmZpY2llbnRzIiwgcyA9IGZpdC5sYXNzbyRsYW1iZGEubWluKQpjb2VmX21hdHJpeCA8LSBhcy5tYXRyaXgoY29lZl9sYXNzbykKCiMgT3V0cHV0IG5vbiB6ZXJvIGNvZWZmaWNpZW50cwpub25femVybyA8LSBjb2VmX21hdHJpeCAhPTAKY29lZl90YWJsZSA8LSBkYXRhLmZyYW1lKFZhcmlhYmxlID0gcm93bmFtZXMoY29lZl9tYXRyaXgpW25vbl96ZXJvXSwgQ29lZmZpY2llbnRzID0gY29lZl9tYXRyaXhbbm9uX3plcm9dKQpjb2VmX3RhYmxlIDwtIGNvZWZfdGFibGVbb3JkZXIoLWFicyhjb2VmX3RhYmxlJENvZWZmaWNpZW50cykpLF0KY29lZl90YWJsZSRDb2VmZmljaWVudHMgPC0gcm91bmQoY29lZl90YWJsZSRDb2VmZmljaWVudHMsIGRpZ2l0cyA9IDQpCmNvZWZfdGFibGUkQ29lZmZpY2llbnRzIDwtIGZvcm1hdChjb2VmX3RhYmxlJENvZWZmaWNpZW50cywgc2NpZW50aWZpYyA9IEZBTFNFKQpgYGAKCiMjIyBPdXB1dCBjb2xsYXBzZWQgY29lZmZzIAoKYGBge3J9CiMgR3JvdXAgcHJlZml4ZXMgZm9yIHJlZ3Jlc3Npb24gb3V0cHV0CmNvZWZfdGFibGUgPC0gY29lZl90YWJsZSAlPiUKICBtdXRhdGUocHJlZml4ID0gY2FzZV93aGVuKAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImFkZHJlc3Nfc2ltcGxlXyIpIH4gIkFkZHJlc3MgaW5kaWNhdG9ycyIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiQUVEXyIpIH4gIkFFRCBleGNoYW5nZSByYXRlcyIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiY29tbV8iKSB+ICJDb21tIHZhcmlhYmxlcyIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiY29tbXVuaXR5XyIpIH4gIkNvbW11bml0eSBpbmRpY2F0b3JzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJlbWlyYXRlXyIpIH4gIkVtaXJhdGUgdmFyaWFibGVzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJhcmVhX3NxIikgfiAiQXJlYSBzcXVhcmVkIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJhcmVhIikgfiAiQXJlYSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYmFsY29ueSIpIH4gIiMgQmFsY29ueXMiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImJhdGhzX3NxIikgfiAiIyBCYWxjb255cyBzcXVhcmVkIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJiZWRfc3EiKSB+ICIjIEJlZHMgc3F1YXJlZCIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiYmVkIikgfiAiIyBCZWRzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJmdXJuaXNoZWQiKSB+ICIjIEZ1cm5pc2hlZCBpbmRpY2F0b3IiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImdvbGQiKSB+ICJHb2xkIHByaWNlIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJtZXRybyIpIH4gIkRpc3RhbmNlIHRvIG1ldHJvIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJwYXJraW5nIikgfiAiUGFya2luZyBpbmRpY2F0b3IiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgImxvbiIpIH4gIkxvbmdpdHVkZSIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiZ2RwIikgfiAiR0RQIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJob3NwaXRhbCIpIH4gIkRpc3RhbmNlIHRvIGhvc3BpdGFsIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJzdWJyZWdpb24iKSB+ICJSZWdpb24gaW5kaWNhdG9ycyAoYnkgZ2VvZ3JhcGhpYyBjb29yZGluYXRlcykiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIm1hcmtldCIpIH4gIkRpc3RhbmNlIHRvIGdyb2Nlcnkgc3RvcmUiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgInBhcmtpbmciKSB+ICJQYXJraW5nIGluZGljYXRvciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAic3ViZGlzdHJpY3QiKSB+ICJTdWJkaXN0cmljdCBpbmRpY2F0b3JzIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJzd2ltbWluZ19wb29sIikgfiAiU3dpbW1pbmcgcG9vbCBpbmRpY2F0b3IiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlVTRF9CVEMiKSB+ICJVU0MtY3J5cHRvIGV4Y2hhbmdlIHJhdGUiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlBDMV9kZW1hbmQiKSB+ICJQQ0EgMSBkZW1hbmQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlBDMl9kZW1hbmQiKSB+ICJQQ0EgMiBkZW1hbmQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlBDMl9kZW1hbmQiKSB+ICJQQ0EgMyBkZW1hbmQiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIlBDMV9vZmZlciIpIH4gIlBDQSAxIG9mZmVyIiwKICAgIHN0cl9kZXRlY3QoVmFyaWFibGUsICJQQzJfb2ZmZXIiKSB+ICJQQ0EgMiBvZmZlciIsCiAgICBzdHJfZGV0ZWN0KFZhcmlhYmxlLCAiUEMzX29mZmVyIikgfiAiUENBIDMgb2ZmZXIiLAogICAgc3RyX2RldGVjdChWYXJpYWJsZSwgIihJbnRlcmNlcHQpIikgfiAiKEludGVyY2VwdCkiLAogICAgVFJVRSB+ICJNaXNjIiAjIEZvciBhbGwgb3RoZXIgY2FzZXMKICApKQoKYGBgCgoKYGBge3J9CiMgQ29sbGFwc2UgdGhlIGRhdGFmcmFtZSB0byBvbmx5IGtlZXAgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGVhY2ggcHJlZml4CiMgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgdmFyaWFibGVzIG9mIGVhY2ggdHlwZQpjb2VmX3RhYmxlJENvZWZmaWNpZW50cyA8LSBhcy5udW1lcmljKGNvZWZfdGFibGUkQ29lZmZpY2llbnRzKQpjb2xsYXBzZWRfY29lZl9tYXRyaXggPC0gY29lZl90YWJsZSAlPiUKICBncm91cF9ieShwcmVmaXgpICU+JQogIHN1bW1hcmlzZShNZWFuID0gbWVhbigxMDAqQ29lZmZpY2llbnRzKSwKICAgICAgICAgICAgTWluID0gbWluKDEwMCpDb2VmZmljaWVudHMpLAogICAgICAgICAgICBNYXggPSBtYXgoMTAwKkNvZWZmaWNpZW50cyksCiAgICAgICAgICAgIENvdW50ID0gbigpKSAlPiUKICBtdXRhdGUoTWVhbiA9IHJvdW5kKE1lYW4sIDIpLAogICAgICAgICBNaW4gPSByb3VuZChNaW4sIDIpLAogICAgICAgICBNYXggPSByb3VuZChNYXgsIDIpKSAlPiUKICBhcnJhbmdlKGRlc2MoQ291bnQpKSAgIyBTb3J0aW5nIGJ5IE1heCBpbiBkZXNjZW5kaW5nIG9yZGVyCmBgYAoKCiMjIyBJbnZlc3RpZ2F0ZSBwZXJjZW50YWdlIGVycm9yCmBgYHtyfQojIEF2ZXJhZ2UgcGVyY2VudGFnZSBlcnJvciAKcHJlZCA8LSBwcmVkaWN0KGZpdC5sYXNzbywgbmV3eCA9IGFzLm1hdHJpeCh4X3Rlc3RfZGYpLCBzID0gZml0Lmxhc3NvJGxhbWJkYS5taW4sIHR5cGUgPSAicmVzcG9uc2UiKQogIAppZiAobG9nX3ByaWNlKSB7CiAgICBwcmVkIDwtIGV4cChwcmVkKQogICAgeV90ZXN0IDwtIHlfdGVzdF9vcmlnCn0KCmNvbXBhcmVfZGYgPC0gZGF0YS5mcmFtZSh5X3Rlc3QgPSB5X3Rlc3QsIHByZWRpY3Rpb25zID0gcHJlZCkKY29tcGFyZV9kZiRwZXJjX2Vycm9yIDwtIGFicygoY29tcGFyZV9kZiR5X3Rlc3QtY29tcGFyZV9kZiRzMSkvY29tcGFyZV9kZiR5X3Rlc3QpKjEwMApjb21wYXJlX2RmJGVycm9yIDwtIGFicyhjb21wYXJlX2RmJHMxIC1jb21wYXJlX2RmJHlfdGVzdCkKCiMgQ2FsY3VsYXRlIHRoZSBkZWNpbGVzCmRlY2lsZXMgPC0gcXVhbnRpbGUoY29tcGFyZV9kZiRwZXJjX2Vycm9yLCBwcm9icyA9IHNlcSgwLCAxLCBieSA9IDAuMSksIG5hLnJtID0gVFJVRSkKcHJpbnQoZGVjaWxlcykKYGBgCgojIyMgR3JhcGhzIApgYGB7cn0KIyBQcmVwYXJlIGRhdGEgZm9yIGdyYXBocyAKdGVzdF9ncmFwaCA8LSBkYXRhLmZyYW1lKHhfdGVzdF91bnNjYWxlZCkKdGVzdF9ncmFwaCRwZXJjX2Vycm9yIDwtIGNvbXBhcmVfZGYkcGVyY19lcnJvcgp0ZXN0X2dyYXBoJGVycm9yICA8LSBjb21wYXJlX2RmJGVycm9yCgp0ZXN0X2dyYXBoJHByaWNlIDwtIGNvbXBhcmVfZGYkeV90ZXN0CnRlc3RfZ3JhcGggCmBgYApgYGB7cn0KIyBHcmFwaCBhYnMgZXJyb3IKcGxvdF9hYnNfZXJyb3I8LSBnZ3Bsb3QodGVzdF9ncmFwaCwgYWVzKHggPSBwcmljZSwgeSA9IGVycm9yKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICcjMWY3N2I0JyAsc2l6ZSA9IDAuNSkgKyAgIyBTY2F0dGVyIHBsb3QgcG9pbnRzCiAgeGxhYigiUHJpY2UiKSArCiAgeWxhYigiQWJzb2x1dGUgRXJyb3IiKSArIAogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIiwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICAjIEFkanVzdCB0aGUgZm9udCBzaXplIGhlcmUKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksICAjIEFkanVzdCB0aGUgdGl0bGUgZm9udCBzaXplCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCkpICsgICMgQWRqdXN0IHRoZSBheGlzIHRleHQgZm9udCBzaXplCiAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6Y29tbWEpIApwbG90X2Fic19lcnJvcgpgYGAKCgpgYGB7cn0KIyBHcmFwaCBwcmVkaWN0aW9uIGVycm9yCgojUHJlcGFyZSBkYXRhCnRlc3RfZ3JhcGhfZHQgPC0gdGVzdF9ncmFwaCAlPiUgYXMuZGF0YS50YWJsZQoKdGVzdF9ncmFwaF9kdFssIGNvbW11bml0eSA6PSAnRHViYWkgTWFyaW5hJ10KCnRlc3RfZ3JhcGhfZHQ8LSB0ZXN0X2dyYXBoX2R0ICU+JQogIC5bY29tbXVuaXR5X0p1bWVpcmFoLkJlYWNoLlJlc2lkZW5jZS4uSkJSLj09VCwgY29tbXVuaXR5IDo9ICdKdW1laXJhaCBCZWFjaCBcbiBSZXNpZGVuY2UgKEpCUiknXSAlPiUKICAuW2NvbW11bml0eV9KdW1laXJhaC5MYWtlLlRvd2Vycy4uSkxULj09VCwgY29tbXVuaXR5IDo9ICdKdW1laXJhaCBMYWtlIFxuIFRvd2VycyAoSkxUKSddICU+JQogIC5bY29tbXVuaXR5X0p1bWVpcmFoLlZpbGxhZ2UuQ2lyY2xlLi5KVkMuPT1ULCBjb21tdW5pdHkgOj0gJ0p1bWVpcmFoIFZpbGxhZ2UgXG4gQ2lyY2xlIChKVkMpJ10KCgpwbG90X3BlcmNfZXJyb3JfY29tbXVuaXR5IDwtIGdncGxvdCh0ZXN0X2dyYXBoX2R0W3Rlc3RfZ3JhcGhfZHQkcGVyY19lcnJvciA8IDEwMF0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeT1jb21tdW5pdHksIHg9cGVyY19lcnJvciwgY29sb3I9Y29tbXVuaXR5KSkgKyAKICBnZW9tX3Zpb2xpbihhZXMoZmlsbCA9IGNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgZmlsbCA9IGFmdGVyX3NjYWxlKGNvbG9yc3BhY2U6OmxpZ2h0ZW4oZmlsbCwgLjIpKSksCiAgICAgICAgICAgICAgZHJhd19xdWFudGlsZXMgPSBjKDAuMDUsIDAuMjUsIDAuNSwgMC43NSwgMC45NSksCiAgICAgICAgICAgICAgc2l6ZSA9IDAuMiwgc2NhbGU9J3dpZHRoJywgY29sb3VyID0gImJsYWNrIikgKwogIHN0YXRfc3VtbWFyeShmdW49bWVhbiwgZ2VvbT0icG9pbnQiLCBzaGFwZT0xNiwgc2l6ZT0zLCBjb2xvcj0iYmxhY2siKSArICMgSGlnaGxpZ2h0IHRoZSBtZWFuIGluIHJlZAogIHRoZW1lX21pbmltYWwoKSArIAogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsCiAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAKICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksCiAgICAgICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZShzaXplID0gMC44KSwKICAgICAgICBheGlzLnRpdGxlLnkubGVmdD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIiwgc2l6ZT0xNCksCiAgICAgICAgYXhpcy50ZXh0LnkubGVmdD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIiwgc2l6ZT0xMiksCiAgICAgICAgYXhpcy50aXRsZS55LnJpZ2h0PWVsZW1lbnRfdGV4dChjb2xvcj0iYmxhY2siLCBzaXplPTE0KSwKICAgICAgICBheGlzLnRleHQueS5yaWdodD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIiwgc2l6ZT0xNCksCiAgICAgICAgYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KHNpemU9MTIpLAogICAgICAgIGF4aXMudGl0bGUueD1lbGVtZW50X3RleHQoc2l6ZT0xNiksCiAgICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKSkgKwogIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OmNvbW1hKSArCiAgbGFicyh5PScnLCB4PSJQcmVkaWN0aW9uIEVycm9yICglKSIpIApwbG90X3BlcmNfZXJyb3JfY29tbXVuaXR5CgpgYGAKCmBgYHtyfQojIEdyYXBoIHBlcmNlbnRhZ2UgZXJyb3IKcGxvdF9wZXJjX2Vycm9yPC0gZ2dwbG90KHRlc3RfZ3JhcGgsIGFlcyh4ID0gcHJpY2UsIHkgPSBwZXJjX2Vycm9yKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICcjMWY3N2I0JyAsc2l6ZSA9IDAuNSkgKyAgIyBTY2F0dGVyIHBsb3QgcG9pbnRzCiAgeGxhYigiUHJpY2UiKSArCiAgeWxhYigiUGVyY2VudGFnZSBFcnJvciIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSBmb250IHNpemUgaGVyZQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemUKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkgKyAgIyBBZGp1c3QgdGhlIGF4aXMgdGV4dCBmb250IHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgCmBgYAoKYGBge3J9CnRlc3RfZ3JhcGgkY29tbXVuaXR5X3ZhciA8LSB0ZXN0X2dyYXBoX2R0JGNvbW11bml0eQoKZHViYWlfbWFyaW5hX2RhdGEgPC0gdGVzdF9ncmFwaCAlPiUgCiAgZmlsdGVyKGNvbW11bml0eV92YXIgPT0gJ0R1YmFpIE1hcmluYScpCgojIEdyYXBoIHBlcmNlbnRhZ2UgZXJyb3IgZm9yIER1YmFpIE1hcmluYQpwbG90X3BlcmNfZXJyb3I8LSBnZ3Bsb3QoZHViYWlfbWFyaW5hX2RhdGEsIGFlcyh4ID0gcHJpY2UsIHkgPSBwZXJjX2Vycm9yKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICcjMWY3N2I0JyAsc2l6ZSA9IDAuNSkgKyAgIyBTY2F0dGVyIHBsb3QgcG9pbnRzCiAgeGxhYigiUHJpY2UiKSArCiAgeWxhYigiUGVyY2VudGFnZSBFcnJvciIpICsgCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSBmb250IHNpemUgaGVyZQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemUKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkgKyAgIyBBZGp1c3QgdGhlIGF4aXMgdGV4dCBmb250IHNpemUKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkgCmBgYAoKYGBge3J9CiMgU3VtbWFyeSB0YWJsZSAKc3VtbWFyeV90YWJsZSA8LSB0ZXN0X2dyYXBoX2R0ICU+JQogIGdyb3VwX2J5KGNvbW11bml0eSkgJT4lCiAgc3VtbWFyaXNlKAogICAgUTEgPSBwYXN0ZTAocm91bmQocXVhbnRpbGUocGVyY19lcnJvciwgMC4yNSwgbmEucm0gPSBUUlVFKSwgMiksICIlIiksCiAgICBNZWRpYW4gPSBwYXN0ZTAocm91bmQobWVkaWFuKHBlcmNfZXJyb3IsIG5hLnJtID0gVFJVRSkgLCAyKSwgIiUiKSwKICAgIE1lYW4gPSBwYXN0ZTAocm91bmQobWVhbihwZXJjX2Vycm9yLCBuYS5ybSA9IFRSVUUpLCAyKSwgIiUiKSwKICAgIFEzID0gcGFzdGUwKHJvdW5kKHF1YW50aWxlKHBlcmNfZXJyb3IsIDAuNzUsIG5hLnJtID0gVFJVRSksIDIpLCAiJSIpLAogICkKYGBgCgoKYGBge3J9CiMgR2V0IGNvbW11bml0eSB2YXJpYWJsZQp0cmFpbl9kdCA8LSByYXdfdHJhaW4gJT4lIGFzLmRhdGEudGFibGUKCnRyYWluX2R0WywgY29tbXVuaXR5IDo9ICdEdWJhaSBNYXJpbmEnXQoKdHJhaW5fZHQ8LSB0cmFpbl9kdCAlPiUKICAuW2NvbW11bml0eV9KdW1laXJhaC5CZWFjaC5SZXNpZGVuY2UuLkpCUi49PVQsIGNvbW11bml0eSA6PSAnSnVtZWlyYWggQmVhY2ggXG4gUmVzaWRlbmNlIChKQlIpJ10gJT4lCiAgLltjb21tdW5pdHlfSnVtZWlyYWguTGFrZS5Ub3dlcnMuLkpMVC49PVQsIGNvbW11bml0eSA6PSAnSnVtZWlyYWggTGFrZSBcbiBUb3dlcnMgKEpMVCknXSAlPiUKICAuW2NvbW11bml0eV9KdW1laXJhaC5WaWxsYWdlLkNpcmNsZS4uSlZDLj09VCwgY29tbXVuaXR5IDo9ICdKdW1laXJhaCBWaWxsYWdlIFxuIENpcmNsZSAoSlZDKSddCgoKIyBVbmRlcnN0YW5kIGhpZ2ggcHJlZGljdGlvbiBlcnJvcnMKaW52ZXN0aWdhdGVfdHJhaW4gPC1jYmluZChleHAoeV90cmFpbl9kZiksIGFkZHJlc3MgPSByYXdfdHJhaW4kYWRkcmVzc19zaW1wbGUsIHN1YmRpc3RyaWN0ID1yYXdfdHJhaW4kc3ViZGlzdHJpY3QsIGNvbW11bml0eSA9IHRyYWluX2R0JGNvbW11bml0eSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAppbnZlc3RpZ2F0ZV90ZXN0IDwtY2JpbmQoZXhwKHlfdGVzdF9kZiksIHByZWRpY3Rpb24gPSBwcmVkLCB0ZXN0X2dyYXBoX2R0JHBlcmNfZXJyb3IsIGFkZHJlc3MgPSByYXdfdGVzdCRhZGRyZXNzX3NpbXBsZSwgc3ViZGlzdHJpY3QgPXJhd190ZXN0JHN1YmRpc3RyaWN0LCBjb21tdW5pdHkgPSB0ZXN0X2dyYXBoX2R0JGNvbW11bml0eSkKCiMgQ2FjdWxhdGUgbWVhbiB2YWx1ZXMgYnkgcmVnaW9uIGluIHRyYWluCgp2YXJpYWJsZXMgPC0gYygicHJpY2UiKSAKCmludmVzdGlnYXRlX3RyYWluIDwtIGludmVzdGlnYXRlX3RyYWluICU+JQogIGdyb3VwX2J5KGFkZHJlc3MpICU+JQogIG11dGF0ZShhY3Jvc3MoYWxsX29mKHZhcmlhYmxlcyksIH5tZWFuKC54LCBuYS5ybSA9IFRSVUUpLCAubmFtZXMgPSAibWVhbl97LmNvbH1fYWRkcmVzcyIpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoc3ViZGlzdHJpY3QpICU+JQogIG11dGF0ZShhY3Jvc3MoYWxsX29mKHZhcmlhYmxlcyksIH5tZWFuKC54LCBuYS5ybSA9IFRSVUUpLCAubmFtZXMgPSAibWVhbl97LmNvbH1fc3ViIikpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShjb21tdW5pdHkpICU+JQogIG11dGF0ZShhY3Jvc3MoYWxsX29mKHZhcmlhYmxlcyksIH5tZWFuKC54LCBuYS5ybSA9IFRSVUUpLCAubmFtZXMgPSAibWVhbl97LmNvbH1fY29tIikpICU+JQogIHVuZ3JvdXAoKQoKIyBEcm9wIGR1cGxpY2F0ZXMKaW52ZXN0aWdhdGVfdHJhaW4gPC0gc2VsZWN0KGludmVzdGlnYXRlX3RyYWluLCAtdmFyaWFibGVzKQppbnZlc3RpZ2F0ZV90cmFpbiA8LSBpbnZlc3RpZ2F0ZV90cmFpbiAlPiUgCiAgZGlzdGluY3QoKQoKIyBNZXJnZSB3aXRoIHRlc3QKbWVyZ2VkX2RmIDwtIG1lcmdlKGludmVzdGlnYXRlX3Rlc3QsIGludmVzdGlnYXRlX3RyYWluLCBieS54PWMoImFkZHJlc3MiLCAic3ViZGlzdHJpY3QiLCAiY29tbXVuaXR5IiksIGJ5Lnk9YygiYWRkcmVzcyIsICJzdWJkaXN0cmljdCIsICJjb21tdW5pdHkiKSwgYWxsLng9VFJVRSkKCm1lcmdlZF9kZiRkaWZmX2FkZCA8LSAoKG1lcmdlZF9kZiRwcmljZSAtIG1lcmdlZF9kZiRtZWFuX3ByaWNlX2FkZHJlc3MpL21lcmdlZF9kZiRtZWFuX3ByaWNlX2FkZHJlc3MpKjEwMAptZXJnZWRfZGYkZGlmZl9yZWdpb24gPC0gKChtZXJnZWRfZGYkcHJpY2UgLSBtZXJnZWRfZGYkbWVhbl9wcmljZV9zdWIpL21lcmdlZF9kZiRtZWFuX3ByaWNlX3N1YikqMTAwCm1lcmdlZF9kZiRkaWZmX2NvbSA8LSAoKG1lcmdlZF9kZiRwcmljZSAtIG1lcmdlZF9kZiRtZWFuX3ByaWNlX2NvbSkvbWVyZ2VkX2RmJG1lYW5fcHJpY2VfY29tKSoxMDAKYGBgCgoKCgoKCg==